Команда find используется для поиска файлов. Если написать в консоли просто "find", то на экран будут выведены все файлы из текущей директории и ее поддиректорий. find -type d покажет только директории, а file -type f покажет только файлы. Но для настоящего поиска используется команда
find -name <имя файла>
Например, find -name '*.c' найдет все файлы с расширением ".c", а find -name file.txt найдет все файлы с именем file.txt.
find -size [+|-]<размер> найдет файлы, которые больше указанного размера (+), или меньше (-), или которые занимают ровно столько, сколько указано (если число без знака).
find <директория> запустит find для поиска именно в этой директории (можно указывать несколько).
$ find ~ -atime +100 -delete
будут автоматически стерты все файлы, к которым не было обращения за последние 100 дней (из молчаливого предположения, что раз к ним три месяца не обращались - значит, они и вообще не нужны). Истреблению подвергнутся файлы в подкаталогах любого уровня вложенности - но не включающие их подкаталоги (если, конечно, последние сами не подпадают под критерии отбора).
Использовать опцию -delete, как мы это только что сделали - не самое здоровое решение, ибо файлы при этом удаляются без запроса, и можно случайно удалить что-нибудь нужное. И потому достигнем той же цели следующим образом:
$ find ~/ -atime +100 -exec rm -i {} \;
В этом случае на удаление каждого отобранного файла будет запрашиваться подтверждение.
Обращаю внимание на последовательность символов {} ; (с пробелом между закрывающей фигурной скобкой и обратным слэшем) в конце строки. Пара фигурных скобок {} символизирует, что свои аргументы исполняемая команда (в примере - rm) получает от результатов отбора команды find, точка с запятой означает завершение строки (без нее на нажатие Enter последовало бы вторичное приглашение командной строки), а обратный слэш экранирует ее специальное значение.
И, наконец, опция -exec - именно ею обусловлено величие утилиты find. В качестве значения ее можно указать любую команду с необходимыми опциями - и она будет выполнена над отобранными файлами, которые будут рассматриваться в качестве ее аргументов. Проиллюстрируем это на примере.
$ find ~/ -name *.png -exec cp {} imagesdir \;
В результате все png-файлы будут найдены и скопированы (или - перемещены, если воспользоваться командой mv вместо cp) в одно место.
$ find ~/ -type f -mtime -7 | xargs tar -rf weekly_incremental.tar gzip weekly_incremental.tar
Команда заархивирует файлы измененные за последние 7 дней.
Существует еще множество опций для поиска, которые описаны в man-странице. Недостатком find является медленный поиск, поэтому существует альтернативная команда locate <имя файла>, которая ищет конкретный файл по уже созданной базе данных.