Введение
В операционных системах, подобных Unix, find — это утилита командной строки, которая находит файлы на основе заданных пользователем критериев и либо выводит путь к каждому найденному объекту, либо, если запрошено другое действие, выполняет это действие над каждым найденным объектом. Она начинает поиск с указанной начальной точки и затем рекурсивно обходит узлы (каталоги) иерархической структуры (обычно в виде дерева). Find может обходить и искать по различным файловым системам разделов, принадлежащих одному или нескольким устройствам хранения, смонтированным в начальный каталог. Возможные критерии поиска включают шаблон для сопоставления с именем файла или временной интервал для сопоставления со временем изменения или временем доступа к файлу. По умолчанию find возвращает список всех файлов, находящихся ниже текущего рабочего каталога, хотя пользователи могут ограничить поиск любым желаемым максимальным уровнем вложенности относительно начального каталога. Связанные программы locate используют базу данных индексированных файлов, полученную с помощью find (обновляемую через регулярные интервалы, как правило, заданием cron), для обеспечения более быстрого поиска файлов по имени во всей файловой системе.
История
find появилась в Unix версии 5 как часть проекта Programmer's Workbench и была написана Диком Хейтом вместе с cpio, которые предназначались для совместного использования. Оригинальная реализация GNU find была написана Эриком Деккером. Впоследствии её улучшили Дэвид Маккензи, Джей Плетт и Тим Вуд. Эта команда также была портирована на операционную систему IBM i.
Найти синтаксис
$ find [H|L] path [operand expression]
Эти два параметра управляют тем, как команда find должна обрабатывать символические ссылки. По умолчанию символические ссылки не обрабатываются (не следуются). Параметр `H` заставит команду find следовать символическим ссылкам. Параметр `L` будет следовать символическим ссылкам только при обработке аргументов командной строки. Эти параметры указаны в стандарте POSIX для find. Распространенное расширение – параметр `-noleaf`, для явного отключения обработки символических ссылок. Как минимум один путь должен предшествовать выражению. find способен интерпретировать подстановочные знаки (wildcards) внутри себя, и команды должны быть тщательно заключены в кавычки, чтобы контролировать расширение имен файлов оболочкой (globbing). Элементы выражения разделяются границей аргумента командной строки, обычно представленной пробелами в синтаксисе оболочки. Они вычисляются слева направо. Они могут содержать логические элементы, такие как И (или `-a`) и ИЛИ (или `-o`), а также предикаты (фильтры и действия). GNU find имеет большое количество дополнительных функций, не определенных стандартом POSIX.
The two options control how the find command should treat symbolic links. The default behaviour is never to follow symbolic links. The flag will cause the find command to follow symbolic links. The flag will only follow symbolic links while processing the command line arguments. These flags are specified in the POSIX standard for find. A common extension is the flag, for explicitly disabling symlink following. At least one path must precede the expression. find is capable of interpreting wildcards internally and commands must be quoted carefully in order to control shell globbing. Expression elements are separated by the command line argument boundary, usually represented as whitespace in shell syntax. They are evaluated from left to right. They can contain logical elements such as AND ( or ) and OR ( or ) as well as predicates (filters and actions). GNU find has a large number of additional features not specified by POSIX.