Команда find
Если не указывать дополнительные параметры, find выдает список всех файлов, находящихся в текущем каталоге и всех его подкаталогах:
Общий вид команды:
user$ find
Следующая команда ищет все файлы в текущем каталоге и во всех подкаталогах, названия которых начинаются с ".t":
user$ find -name '.e*'
./.thunderbird
./.thunar
./.textgen
…
В следующем примере find ищет все каталоги, находящиеся в /etc/. Обычные файлы, располагающиеся в /etc/., среди результатов не показываются. Список результатов упорядочивается по алфавиту с помощью команды sort (по умолчанию такой сортировки не происходит).
root# find /etc -type d | sort
/etc
/etc/alsa
/etc/alsa/conf.d
/etc/alternatives
...
В следующем примере find ищет все файлы в (под)каталогах /home, принадлежащих пользователям группы users, причем искомые файлы должны были каким-либо образом быть изменены в течение последних пяти дней (содержание, права доступа и т. д.):
root# find /home -group users -mtime -5
...
Команда find -mtime +5 находит такие файлы, которые были изменены ранее, чем пять дней назад, а команда -mtime 5 возвращает файлы, которые были изменены ровно пять дней назад. При этом во многих случаях "вчера" означает для find "24 и более часов от данного момента". Если вместо -mtime применить параметр -ctime, то точкой изменения времени будет считаться "время изменения индексного дескриптора". Эта точка изменяется и тогда, когда изменились лишь права доступа, а содержимое каталога осталось прежним.
Следующая команда удаляет все резервные копии, содержащиеся в данном каталоге и во всех подкаталогах. При этом find строит список всех сомнительных файлов и передает его команде rm через подстановку команды ($(команда)):
user$ rm $(find. -name '*~')
Если речь идет об очень большом количестве файлов, то при выполнении вышеуказанной команды возникает ошибка: запись со всеми *~-файлами может получиться настолько длинной, что превысит размер командной строки. В таких случаях следует воспользоваться либо параметром -exec - команды find, либо командой xargs.