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 -осуществляет поиск по имени файла.

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

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

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

$ find / -name file1.txt -mtime 1

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

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

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

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

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

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

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

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

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