Как искать и находить файлы в Linux с помощью команд

{title}

Часто необходимо искать определенные типы файлов в средах Linux, и мы не знаем, как правильно их искать, не тратя много времени.

Для дистрибутивов Linux была разработана команда find, которая была разработана для рекурсивной фильтрации объектов в файловой системе на основе условного механизма. С помощью этой команды find мы можем искать файл или каталог в вашей файловой системе.

Если мы включим параметр -exec, файлы можно будет найти и обработать немедленно в рамках одной и той же команды.

1. Найти файлы по имени или расширению Linux команды


Мы можем использовать find из командной строки, чтобы найти конкретный файл по имени или расширению.

Его синтаксис:

 find / home / username / -name "* .extension" 
Например, мы будем искать файлы, оканчивающиеся на .gz:

{title}

2. Практические команды и синтаксис для использования с командами поиска Linux


С помощью команды find у нас есть несколько параметров:
 найти варианты начала / пути выражения 
Атрибут options будет управлять поведением и методом оптимизации процесса поиска. Атрибут start / path определит каталог верхнего уровня, где find начнет фильтровать.

Атрибут expression управляет тестами, которые ищутся в иерархии каталогов для получения выходных данных.
Например, мы можем выполнить следующее:

 найти -O3 -L / var / www / -name "* .html" 
Эта команда включает максимальный уровень оптимизации (-O3) и позволяет переходить по символическим ссылкам (-L) для поиска в полном дереве каталогов в пути / var / www / файлов, заканчивающихся на .html.

{title}

3. Опции и оптимизация с помощью команд Find Linux


Стандартная конфигурация Find to search будет игнорировать символьные ссылки (файлы ярлыков). Если мы хотим найти и следовать символическим ссылкам, мы можем добавить опцию -L к команде, как мы видели ранее. Find имеет три (3) уровня оптимизации: -O1, -O2 и -O3.

Оптимизация -O1 является настройкой по умолчанию и заставляет поиск фильтровать по имени файла перед запуском всех других тестов.

Оптимизация на уровне -O2 отдает приоритет фильтрам имен файлов, как в -O1, а затем выполняет фильтрацию всех типов файлов перед продолжением других более ресурсоемких условий. Оптимизация уровня -O3 позволяет нам находить более глубокую оптимизацию и переупорядочивать все тесты, основываясь на их относительной стоимости и вероятности лучших результатов.

Некоторые из вариантов:

Это фильтр на основе первого имени файла

 -O1 (по умолчанию) 

Сначала используйте имя файла, а затем тип файла

 -O2 

Изменить порядок результатов

Это позволяет поиску автоматически изменять порядок поиска, основываясь на эффективном использовании ресурсов и вероятности лучших результатов.

 -O3 

Поиск в текущем каталоге, а также во всех подкаталогах на уровнях глубины X

 -maxdepth X 

Поиск независимо от регистра текста

 -iname 

Возвращает только результаты, которые не соответствуют тестовому случаю.

 -не 

Выполнить поиск файлов

 Тип F 

Поиск по каталогам

 тип d 

4. Поиск файлов по времени изменения команд Linux


Команда find имеет возможность фильтровать иерархию каталогов на основе последней модификации файла.
Синтаксисы:
 find / -name "* conf" -mtime 8 find / home / user / -name "* conf" -mtime 2 
Первая команда отобразит список всех файлов во всей файловой системе, которые заканчиваются символами conf и были изменены за последние 8 дней. Вторая команда фильтрует домашний каталог пользователя на наличие файлов с именами, которые заканчиваются символами conf и были изменены в предыдущие 2 дня.

Используйте Grep для поиска файлов на основе команд Linux

$config[ads_text5] not found

Команда find может фильтровать иерархию каталогов только по имени файла и метаданным, поэтому, если необходимо выполнить поиск по содержимому файла, используйте такой инструмент, как grep.

Мы будем использовать следующий синтаксис:

 найти. -type f -exec grep "example" '{}' \; -print 
При этом выполняется поиск всех объектов в текущей иерархии каталогов (.) Это файл (-type f), а затем выполняется команда grep «example» для каждого файла, соответствующего условиям. Соответствующие файлы печатаются на экране (-print). Скобки ({}) являются заполнителями для результатов поиска. {} Заключен в одинарные кавычки ('), чтобы избежать присвоения grep неверно сформированного имени файла. Команда -exec заканчивается точкой с запятой "(;)", которая должна быть экранирована "(\;)", чтобы избежать интерпретации интерпретатором команд.

Как найти и обработать файлы с помощью команд Find Linux

Мы можем использовать опцию -exec для выполнения команд для всех объектов, которые соответствуют поисковому выражению.

Его синтаксис:

 найти. -name "rc.conf" -exec chmod или + r '{}' \; 
Это отфильтрует все объекты в текущей иерархии (.) Для файлов с именем rc.conf и выполните команду chmod или + r, чтобы изменить разрешения результатов поиска.

Таким образом, find является союзником для полного поиска файлов в Linux.