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или-d— начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.-prune— используется, когда вы хотите исключить из поиска определённые каталоги.-mountили-xdev— не переходить на другие файловые системы.-regextype тип— указание типа используемых регулярных выражений.-P— не разворачивать символические ссылки. поведение по умолчанию.-L— разворачивать символические ссылки.
Примеры[править]
Поиск в текущей директории[править]
Найти все файлы, начиная с текущей директории, название которых начинается на 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
Однако, директории с именами, содержащими пробелы, методом перенаправления через xargs обработаны не будут, поэтому следует использовать первый вариант, дополненный:
find /path -type d -exec 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.
На английском языке[править]
| Общие команды MS-DOS и Windows | |
|---|---|
| Append • Attrib • Break • Call • Cd (Chdir) • Chcp • Chkdsk • Cls • Command • Copy • Date • Debug • Defrag • Del • Dir • Diskcomp • Diskcopy • Doskey • Echo • Edit • Edlin • Erase • Exit • Expand • Fastopen • Fc • Find • For • Format • Goto • Graphics • Help • If • Label • Loadfix • Md • Mem • Mkdir • Mode • More • Move • Nlsfunc • Path • Pause • Print • Prompt • Rd • Rem • Ren • Rename • Replace • Rmdir • Set • Setver • Share • Shift • Sort • Subst • Time • Tree • Type • Ver • Verify • Vol • Xcopy | |
| См. также | |
| Это заготовка статьи о системах класса UNIX. Вы можете помочь проекту, исправив и дополнив её. |

