Команда ‘find’

Команда ‘find‘ используется для поиска информации в файловой системе. Из-за сильной разветвленности файловой системы, найти нужный объект бывает непросто. find помогает облегчить такую задачу.

В простейшем варианте команда поиска пути к файлу (path) по его имени (filename) выглядит следующим образом:

$ find path -name filename

После имени команды find, параметра path и ключа -name здесь указано имя искомого файла: filename.

После имени команды можно указать путь к каталогу, в котором нужно указать путь к каталогу, в котором нужно производить поиск. Поиск будет включать все подкаталоги. Также можно указать несколько каталогов подряд.

$ find /etc /home -name filename 

Эта команда произведет поиск файла filename в каталогах /etc и /home.

После ключа -name можно указать имя файла или шаблон, по которому нужно искать файлы. Например, следующая команда найдет в системе все файлы с именем passwd.

$ find / -name passwd

Если вы не помните точное имя файла: passwd или password, в этом случае можно указать следующий шаблон:

$ find / -name passw*d

Под этот шаблон попадают оба имени файла. Символ * соответствует любому набору любых символов и даже отсутствию символов.

Ключи

-name -осуществляет поиск по имени файла.

-iname — тоже самое что -name, но делает имя файла нечувствительным к регистру.

-size число — позволяет указать размер файла, если вы его точно знаете. По умолчанию размер указывается в блоках размером 512 Кбайт. Если нужно указать размер в байтах, то после числа укажите букву c.

-print — заставляет вывести содержимое файла в консоль.

-perm — найти в каталоге файлы с определенными правами доступа. Например, следующая команда находит в каталоге /etc файлы с правами доступа 640

-mtime число — в качестве параметра число можно указать количество дней, прошедших со дня последнего редактирования файла. Например, если вы вчера редактировали файл с именем file.txt, но не помните куда его сохранили, то выполните следующую команду

$ find / -name file1.txt -mtime 1

-exec — этот параметр позволяет воздействовать на найденные с помощью команды find файлы. Например, следующая команда ищет в каталоге /home все файлы и выполняет для каждого из них команду ‘ls -l’

-type тип — этот ключ позволяет указать тип файла. В качестве типа можно указать следующее:

  • d — каталог
  • f — обычный файл
  • p — именованный канал
  • l — символическая ссылка

! — восклицательный знак используется для инвертирования критерия поиска. Например, чтобы выполнить поиск всех файлов, которые не относятся к группе root, используется следующая команда

Полезное применение

Поиск содержимого файла

С помощью команды find можно искать не только имена файлов или каталогов, но и осуществлять поиск по содержимому файлов. Очень полезным в этом случае будет следующая команда:

$ find . -type f -name "*" -print | xargs grep "искомый текст" 

Здесь в качестве начального каталога для поиска указана точка, т. е. поиск будет начат с текущей папки, но можно указать и другой путь поиска. Потом указывается тип искомых файлов. В данном случае ограничиваемся только файлами. В качестве имени указана звездочка, что соответствует всем файлам. Ключ -print заставляет отображать содержимое файла.

Далее вывод команды передается, с помощью вертикальной черты, команде xargs, которая объединяет полученные на входе данные и выполняет команду grep. В свою очередь команда grep ищет в тексте, которая подается на вход строку, указанную в качестве параметра.

Исключить из поиска недоступные каталоги.

Результатом выполнения команды find от имени обычного пользователя может стать длинный список сообщений Permission Denied. Для избежания этого вы можете исключить из поиска недоступные каталоги

Или отправить все сообщения об ошибках в битоприемник /dev/null:

Was this helpful?

0 / 0

Добавить комментарий 0