Урок посвящен командам find и grep для поиска файлов и информации внутри них. Для практического примера создадим несколько файлов в директории documents.
Создание тестовых файлов
Создадим файлы с помощью команды touch в директории documents:
cd documents
touch main.7 main_stream text123.txt main2.7p main3.7p name2.cpp
Теперь можно приступать к поиску.
Команда FIND: Поиск файлов
Команда find позволяет искать файлы по различным критериям. Начнем с поиска в текущей директории (.):
find . -type f -name "*.txt"
Эта команда находит все файлы с расширением .txt в текущей директории. -type f указывает на поиск файлов, а -name "*.txt" — на поиск по имени с использованием подстановочного знака *.
Поиск файлов по началу имени:
find . -type f -name "main*" -print
Эта команда найдет все файлы, начинающиеся с «main».
Поиск файлов с учетом регистра:
find . -type f -name "main3.7p"
Найдется только файл main3.7p, так как регистр учитывается. Для игнорирования регистра используем -iname:
find . -type f -iname "main3.7p"
Теперь найдутся файлы с именем main3.7p независимо от регистра.
Поиск файлов по правам доступа:
find . -type f -perm 0664
Эта команда находит файлы с правами доступа 664 (чтение и запись для владельца и группы, только чтение для остальных).
Комбинирование критериев поиска:
find . -type f -perm 0664 -name "m*"
Эта команда ищет файлы с правами доступа 664 и именами, начинающимися с буквы «m».
Поиск по размеру файлов:
find . -type f -size +1M # файлы больше 1 МБ
find . -type f -size -1M # файлы меньше 1 МБ
find . -type f -size 100k # файлы размером 100 КБ
Поиск файлов, не соответствующих критериям (с помощью -not):
find . -type f -not -name "*.txt"
Эта команда найдет все файлы, кроме файлов с расширением .txt.
Команда GREP: Поиск информации внутри файлов
Команда grep используется для поиска текста внутри файлов. Например, для поиска слова «print» в файле main.7:
grep print main.7
Выведет строку, содержащую «print». Для поиска без учета регистра используется опция -i:
grep -i main main2.7p
Опция -n выводит номера строк:
grep -n main main2.7p
Комбинирование find и grep:
find . -type f -name "*.cpp" -exec grep -i main {} ;
Эта команда ищет файлы с расширением .cpp и выполняет grep для каждого найденного файла.
Более сложный пример с комбинированием find, grep и xargs:
find . -type f -size -100k -print0 | xargs -0 grep -in main
Эта команда находит все файлы размером меньше 100 КБ и выполняет поиск слова «main» (без учета регистра, с номерами строк) во всех этих файлах. -print0 и xargs -0 необходимы для правильной обработки имен файлов, содержащих пробелы.
Команда SORT: Сортировка информации
Команда sort сортирует данные. Для сортировки содержимого файла file.txt:
sort file.txt
Результат выводится на экран, сам файл не изменяется. Для сохранения отсортированного результата в новый файл:
sort file.txt > file_sorted.txt
Для сортировки чисел:
sort -n test.txt
Опция -n указывает на числовую сортировку. Для обратной сортировки используется опция -r:
sort -nr test.txt
В этом уроке рассмотрены команды find, grep и sort для поиска файлов и информации, а также для сортировки данных в Linux. Комбинируя эти команды, можно эффективно искать и обрабатывать информацию в файловой системе.