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 {} \;
Поиск в зависимости от времени создания
Вывести список файлов во всей файловой системе, изменённых в течение последней минуты:
find / -newerct '1 minute ago' -print
Вывести список файлов во всей файловой системе, которые были изменены более 31 дня назад:
find / -mtime +31 -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.
На английском языке
root@mybox:~# | Это незавершённая статья о системах класса UNIX. Вы можете помочь проекту, исправив и дополнив её. |
de:Find el:Find en:Find es:Find fi:Find (Unix) fr:Find hu:Find it:Find (Unix) ja:Find pl:Find pt:Find
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....