- 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.
На английском языке
Команды Unix POSIX.1-2008 Утилиты POSIX.1-2008 admin • alias • ar • asa • at • awk • basename • batch • bc • bg • c99 • cal • cat • cd • cflow • chgrp • chmod • chown • cksum • cmp • comm • command • compress • cp • crontab • csplit • ctags • cut • cxref • date • dd • delta • df • diff • dirname • du • echo • ed • env • ex • expand • expr • false • fc • fg • file • find • fold • fort77 • fuser • gencat • get • getconf • getopts • grep • hash • head • iconv • id • ipcrm • ipcs • jobs • join • kill • lex • link • ln • locale • localedef • logger • logname • lp • ls • m4 • mailx • make • man • mesg • mkdir • mkfifo • more • mv • newgrp • nice • nl • nm • nohup • od • paste • patch • pathchk • pax • pr • printf • prs • ps • pwd • qalter • qdel • qhold • qmove • qmsg • qrerun • qrls • qselect • qsig • qstat • qsub • read • renice • rm • rmdel • rmdir • sact • sccs • sed • sh • sleep • sort • split • strings • strip • stty • tabs • tail • talk • tee • test • time • touch • tput • tr • true • tsort • tty • type • ulimit • umask • unalias • uname • uncompress • unexpand • unget • uniq • unlink • uucp • uudecode • uuencode • uustat • uux • val • vi • wait • wc • what • who • write • xargs • yacc • zcat GNU Coreutils Файловые утилиты chgrp • chown • chmod • cp • dd • df • dir • dircolors • install • ln • ls • mkdir • mkfifo • mknod • mv • rm • rmdir • shred • sync • touch • vdir Текстовые утилиты cat • cksum • comm • csplit • cut • expand • fmt • fold • head • join • md5sum • nl • od • paste • ptx • pr • sha1sum • sort • split • sum • tac • tail • tr • tsort • unexpand • uniq • wc Shell-утилиты basename • chroot • date • dirname • du • echo • env • expr • factor • false • groups • hostid • id • link • logname • nice • nohup • pathchk • pinky • printenv • printf • pwd • readlink • seq • sleep • stat • stty • tee • test • true • tty • uname • unlink • users • who • whoami • yes Общие команды MS-DOS и Windows Append • Attrib • Break • Call • Cd • Chcp • Chdir • 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 См. также Список команд DOS • Список команд операционных систем Miscrosoft
Категории:- Командная строка MS-DOS/Windows
- Утилиты UNIX
Wikimedia Foundation. 2010.