Поиск файлов командой find

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

Поиск всех файлов в текущем разделе

Для поиска всех файлов в текущей директории можно использовать 3 разных варианта:

find
find .
find . -print

Поиск всех файлов в указанной папке по расширению

Предположим, что нужно найти все файлы с расширением png в папке /home/userlinux/images. В этом случае команда будет выглядеть так:

find /home/userlinux/images -name "*.png"

Поиск конкретного файла во всей системе

Чтобы найти конкретный файл во всей системе лучше делать под правами администратора, т.к. не все разделы доступны для чтения под обычным пользователем. В консоли можно набрать такую команду:

find / -name "ssl.conf"

Инверторный поиск файлов

Иногда нам нужно в определенном разделе найти все файлы, кроме некоторых. Вот пример такой команды:

find /home/userlinux/images -not -name "*.png"

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

Комбинированный поиск файлов

Гораздо реже, но все-таки приходится использовать поиск файлов по нескольким критериям. Например, нужно найти все файлы с расширением png кроме тех, у которых в названии есть screen. Команда поиска будет выглядеть примерно так:

find /home/userlinux/images -not -name "*screen*" -name "*.png"

Поиск измененных файлов за последние 20 минут

Для того чтобы найти все измененные файлы за последние 20 минут вводим в терминале следующую команду:

find /home -type f -mmin -20

где /home — это раздел, в котором будет произведен поиск

Для вывода всех измененных файлов за последние 20 минут и отсортированных по времени можно воспользоваться следующей командой:

find /home -type f -mtime -20 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

Можно также воспользоваться альтернативной командой:

find /home -type f -mmin -20 | xargs ls -l

Вывод всех измененных файлов с детализацией за последние 20 минут:

find /home -type f -mmin -20 -exec ls -al {} \;

Вывод всех измененных файлов за последние 20 минут, кроме крайних 5 минут (файлы, измененные в крайние 5 минут, не попадут в выборку):

find /home -type f -mmin -20 ! -mmin -5

Поиск и удаление файлов

Нередко требуется найти какие-то файлы и удалить их (особенно при удалении вирусов). В этом случае можно воспользоваться следующей командой:

find . -name ".htaccess" -exec rm -rf {} \;

где «.htaccess» — это название файла, который нужно найти и удалить.

Поиск пустых файлов и разделов

Для поиска пустых файлов вводим команду:

 find /home/userlinux -type f -empty

Для поиска пустых разделов вводим в терминале:

find ~/home/userlinux -type d -empty

Поиск по хэшу файла

В некоторых случаях требуется найти файл по хэшу. Чаще всего этот поиск используется для поиска переименованных файлов или дублей. Пример команды по поиску определенного хэша:

find . -type f -exec \
bash -c 'md5sum "$0" | grep -q 885866da5da6f40bb78c2be03aed3048 && echo $0' {} \;

эта команда будет искать в текущем разделе все файлы с хэшем 885866da5da6f40bb78c2be03aed3048