Ubuntu для чайников. Команда find

 find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX подобных операционных системах. 

Может производить поиск в одном или нескольких каталогах с использованием критериев, заданных пользователем. 
Более того, find позволяет применять пользователю определённые действия ко всем найденным файлам. Также поддерживаются регулярные выражения
Список ключей
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки. Опция `-name' различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname'.
-type — тип искомого: f=файл, d=каталог (directory), l=ссылка (link), p=канал (pipe), s=сокет.
-user — владелец: имя пользователя или UID.
-group — владелец: группа пользователя или GID.
-perm — указываются права доступа.
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
-atime — время последнего обращения к файлу (в днях).
-amin — время последнего обращения к файлу (в минутах).
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях).
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах).
-mtime — время последнего изменения файла (в днях).
-mmin — время последнего изменения файла (в минутах).
-newer другой_файл — искать файлы, созданные позже, чем другой_файл.
-delete — удалять найденные файлы.
-ls — генерирует вывод как команда ls -dgils.
-print — показывает на экране найденные файлы.
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0).
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
-ok — перед выполнением команды, указанной в -exec, выдаёт запрос.
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 1» ограничивает поиск текущим каталогом.
-prune — используется, когда вы хотите исключить из поиска определённые каталоги.
-mount или -xdev — не переходить на другие файловые системы.
-regex — искать по имени файла, используя регулярные выражения.
-regextype тип — указание типа используемых регулярных выражений.
-P — не разворачивать символические ссылки (поведение по умолчанию).
-L — разворачивать символические ссылки.
-empty — только пустые каталоги.

Примеры
find . -name "video*"  - найти все файлы, начиная с текущего каталога, название которых начинается на video
find / -name "video*"  - найти все файлы, начиная с корневого каталога
find . -name "[A-Z]*" -print  - поиск в текущем каталоге всех файлов, в именах которых встречается хотя бы один символ в верхнем регистре
find /etc -type d -print  - найти все подкаталоги в каталоге /etc 
find / -name 'secret.keys' -print 2>/dev/nul  - если при поиске возникает ошибка (например — нет доступа чтения из каталога) то вывод команды становится менее информативным. Перенаправьте вывод STDERR в /dev/null.
find . -type f -empty  - найти пустые файлы
find / -name «*.ХС» -mount -print  - поиск  всех файлов с расширением .хс только в текущей файловой системе, исключая другие смонтированные файловые системы (опция -mount)
find .  -type d -print  -  получить список всех файлов, но не каталогов
find . -perm 755 -print  - файлов с режимом доступа 755
find . -name "bin" -prune -о -print  - поиск в текущем каталоге, не заходя в подкаталог /bin
find /home/user/video /home/user/Downloads -name 'video*'  - поиск в каталогах /home/user/video и /home/user/Downloads
find . -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"  - найти все графические файлы, начиная с текущего каталога
find /path -type f  |  xargs -I {} chmod 0755 "{}"    - изменить права доступа для всех найденных файлов
find . -name 'php.ini' -exec sed -i 's/log_errors = Off/log_errors = On/g' "{}" \;  - поиск всех файлов php.ini от текущего каталога и замена текста в каждом найденном файле
find / -mmin -1 -print  - вывести список файлов во всей файловой системе, изменённых в течение последней минуты
find / -mtime +31 -print  - вывести список файлов во всей файловой системе, которые были изменены более 31 дня назад
find / -mtime -5 -print  - найти все файлы, которые не обновлялись в течение последних пяти дней
find . -newer age.awk ! -newer belts.awk -exec Is -1 {} ;  - найти все файлы, которые обновлялись позже, чем age.awk, но раньше, чем belts.awk
find / -size +100M -print  - вывести список файлов во всей файловой системе, чей размер больше 100 Мб
find /home/apache -sixe 100с -print  - поиск в каталоге /home/apache файлов, размер которых в точности равен 100 байтам
find . -maxdepth 4 -name 'restore.php'  - глубина поиска указывается относительно каталога, указанного в аргументе команды
find /var/www -maxdepth 4 -name 'restore.php' -exec rm -r {} \;  - рекурсивное удаление файла от текущего каталога, на заданную глубину
find . -mount -type f -size +512M -print 2>/dev/null | xargs -r -d '\n' ls -lh | sort -k5,5 -h -r  - найти все файлы, размер которых больше 512MB, и вывести подробную информацию
find ~/Documents/winaero/ -iname opera45.txt -type f -exec vim {} \;  - найти все файлы opera45.txt и запустить текстовый редактор vim

Комментарии