find
find в утилита поиска файлов, используемая в UNIXподобных операционных системах. Может производить поиск в одной или нескольких директориях с использованием критериев, заданных пользователем. По умолчанию, find возвращает все файлы в рабочей директории. Более того, find позволяет применять пользователю определённые действия ко всем найденным файлам. Также поддерживаются регулярные выражения.
[править] Список ключей
-nameв искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.-typeв тип искомого: f=файл, d=каталог, l=ссылка (link).-userв владелец: имя пользователя или UID.-groupв владелец: группа пользователя или GID.-permв указываются права доступа.-sizeв размер: указывается в 512-байтных блоках или байтах (признак байтов в символ «c» за числом).-atimeв время последнего обращения к файлу.-ctimeв время последнего изменения владельца или прав доступа к файлу.-mtimeв время последнего изменения файла.-newer другой_файлв искать файлы созданные позже, чем другой_файл.-deleteв удалять найденные файлы.-lsв генерирует вывод как команда ls -dgils.-printв показывает на экране найденные файлы.-exec command {} \;в выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.-okв перед выполнением команды указанной в -exec, выдаёт запрос.-depthв начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.-pruneв используется, когда вы хотите исключить из поиска определённые каталоги.
[править] Примеры
[править] Поиск в текущей директории
Найти все файлы, начиная с текущей директории, название которых начинается на my.
find . -name 'my*'
[править] Поиск в определенном каталоге
Найти все файлы, начиная с корневой директории, название которых начинается на my.
find / -name 'my*'
Поиск в директориях /usr/local/man и /opt/local/man файлов, название которых начинается на my.
find /usr/local/man /opt/local/man -name 'my*'
[править] Поиск по нескольким именам файлов
Найти все файлы, начиная с текущей директории, название которых начинается на my или qu. Обратите внимание, что по умолчанию все аргументы соединены с помощью логического и (опция '-a'). Если необходимо объединить несколько аргументов логическим или - используйте опцию '-o'.
find . \( -name "my*" -o -name "qu*" \) -print
[править] Поиск файлов определенного типа
Эта команда отличается от предыдущей тем, что поиск будет производиться только для регулярных файлов, т.е. в результатах поиска не будет директорий, специальных файлов, символических ссылок и т.д.
find . -name "my*" -type f
[править] Вывод расширенной информации о файле
Предыдущие команды выводили имена файлов, потому что по умолчанию find выполняет команду -print. Опция -ls выводит информацию о файле в формате 'ls -la'.
find . -name "my*" -type f -ls
[править] Выполнение команды
Опция -exec выполняет следующую за ней команду и подставляет вместо {} текущий файл. Найти все каталоги ниже указанного каталога и изменить им права доступа:
find /path -type d -exec chmod 0755 {} \;
Опция -exec работает примерно в 10 раз медленнее, чем перенаправление вывода через xargs, поэтому данный код рекомендуется писать следующим образом:
find /path -type d | xargs chmod 0755
[править] Поиск в зависимости от времени создания
Вывести список файлов во всей файловой системе, изменённых в течение последней минуты:
find / -mmin -1 -print
Вывести список файлов во всей файловой системе, которые были изменены более 31 дня назад:
find / -mtime +31 -print
[править] Поиск по размеру файла
Вывести список файлов во всей файловой системе, чей размер больше 100 Мб:
find / -size +100M -print
[править] Поиск файлов принадлежащих определенному пользователю
find . -user <userid>
[править] Игнорирование ошибок
Если при поиске возникает ошибка (например - нет доступа чтения из каталога) то вывод команды становится менее информативным. Перенаправьте вывод STDERR в /dev/null.
find / -name 'secret.keys' -print 2>/dev/null
[править] Ссылки
[править] На русском языке
- "Find helper" - Помощник unix "find".
- "Как выловить битые ссылки" - с помощью find'а найти все битые ссылки.
- "Страница Справочника find.1" - перевод man find из FreeBSD 7.1.
[править] На английском языке
| Стандартные программы UNIX (все программы) | |
|---|---|
| Файловые системы | chroot dd df fdisk fsck mkisofs mkswap mount umount rehash |
| Файлы и каталоги | cat chattr cd chmod chown chgrp cksum cmp cp diff du file fuser ln ls lsof mkdir mv od pwd rm rmdir split touch |
| Процессы | at cron exit kill killall nice nohup pgrep pidof pkill ps renice sleep time top wait watch |
| Пользователи | env finger id last logname mesg passwd su sudo uptime w wall who whoami write |
| Сеть | ftp host ifconfig netcat netstat nmap nslookup ping rlogin SSH traceroute wget |
| Тексты | AWK comm cut ed ex expand unexpand fmt head iconv join less more paste pr sed sort tac tail tr uniq wc xargs |
| Командная строка | alias basename bash bind dirname echo expr false printf test true unset |
| Поиск | find grep strings whereis which |
| Разное | banner bc cal date help lp man history size tee uname yes reboot |
| Это заготовка статьи о системах класса UNIX. Вы можете помочь проекту, исправив и дополнив её. |

