Поиск в Linux с помощью find

Самая универсальная и функциональная команда для поиска в Linuxfind. Данная статья представляет из себя шпаргалку с примерами ее использования.

Поиск файла по имени

find / -name "file.txt"

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

Поиск файла по части имени:

find / -name "*.tmp"

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd

find . -name "sess_*" -a -name "*cd"

* -a: логическое И, -o: логическое ИЛИ.

Поиск по дате

Найти все файлы, которые менялись более 60 дней назад:

find . -mtime +60

По типу

Искать в текущей директории и всех ее подпапках только файлы:

find . -type f

* d — искать только папки.

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

find / -type f -exec grep -i -H "content" {} \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержиться строка content.

С сортировкой по дате модификации

find /data -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получам, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -n 1

Поиск с действием

Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name "sess_*" -type f -print -exec rm {} \;

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

Переименовать найденные файлы:

find . -name "sess_*" -type f -exec mv {} new_name \;

или:

find . -name "sess_*" -type f | xargs -I '{}' mv {} new_name

Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name "*.tmp" | wc -l

# UNIX # Linux
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет