Приведу несколько примеров использования команды 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