.\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 .\" %FreeBSD: src/usr.bin/find/find.1,v 1.82 2007/02/28 10:19:25 ru Exp % .\" $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/man1/find.1,v 1.4 2007/11/20 13:50:08 ru Exp $ .\" $FreeBSD$ .\" .Dd 13 декабря 2006 .Dt FIND 1 .Os .Sh НАЗВАНИЕ .Nm find .Nd обход иерархии файлов .Sh СИНТАКСИС .Nm .Op Fl H | Fl L | Fl P .Op Fl EXdsx .Op Fl f Ar путь .Ar путь ... .Ar выражение .Nm .Op Fl H | Fl L | Fl P .Op Fl EXdsx .Fl f Ar путь .Op Ar путь ... .Ar выражение .Sh ОПИСАНИЕ Утилита .Nm рекурсивно спускается по дереву каталогов каждого пути, указанного аргументами .Ar путь , вычисляя .Ar выражение (состоящее из перечисленных ниже .Dq примитивов и .Dq операндов ) для каждого файла в дереве. .Pp Имеются следующие опции: .Bl -tag -width indent .It Fl E Интерпретировать регулярные выражения в примитивах .Ic -regex и .Ic -iregex как расширенные (современные) регулярные выражения вместо базовых регулярных выражений (BRE). Страница справочника .Xr re_format 7 полностью описывает оба формата. .It Fl H Возвращать информацию о файле и его типе (см.\& .Xr stat 2 ) для файлов, на которые указывают заданные в командной строке символические ссылки, а не для самих ссылок. Если файл, на который указывает ссылка, не существует, информация о файле и его типе будет возвращена для самой ссылки. Информация о файлах для символических ссылок не из командной строки будет возвращаться для самих ссылок. .It Fl L Возвращать информацию о файле и его типе (см.\& .Xr stat 2 ) для файлов, на которые указывают символические ссылки, а не для самих ссылок. Если файл, на который указывает ссылка, не существует, информация о файле и его типе будет возвращена для самой ссылки. .Pp Эта опция эквивалентна устаревшему примитиву .Ic -follow . .It Fl P Возвращать информацию о файле и его типе (см.\& .Xr stat 2 ) для каждой символической ссылки о самой ссылке. Это поведение по умолчанию. .It Fl X Позволить безопасное использование .Nm совместно с .Xr xargs 1 . Если имя файла содержит любой из символов-разделителей, используемых .Xr xargs 1 , вывести диагностическое сообщение в стандартный файл ошибок и пропустить файл. Символы-разделители включают в себя одиночные .Pq Dq Li " ' " и двойные .Pq Dq Li " \*q " кавычки, обратную косую черту .Pq Dq Li \e , пробел, табуляцию и символ перевода строки. .Pp Однако вы можете использовать примитив .Fl print0 совместно с .Dq Nm xargs Fl 0 как эффективную альтернативу. .It Fl d Заставить .Nm производить обход сначала в глубину, т.е.\& каталоги проходятся в пост-порядке, и все элементы каталога обрабатываются перед самим каталогом. По умолчанию, .Nm проходит каталоги в пред-порядке, т.е.\& перед их содержимым. Следует отметить, что этот режим по умолчанию .Em не является обходом сначала в ширину. .Pp Эта опция эквивалентна примитиву .Ic -depth из .St -p1003.1-2001 . Опция .Fl d может быть полезной, когда .Nm используется совместно с .Xr cpio 1 для обработки файлов в каталогах с необычными правами доступа. Она обеспечивает вам право на запись, пока вы помещаете файлы в каталог, a затем, в последнюю очередь, устанавливает права доступа каталога. .It Fl f Указать .Nm файловую иерархию для обхода. Файловые иерархии также могут быть указаны как операнды непосредственно следом за опциями. .It Fl s Заставить .Nm обходить файловые иерархии в лексикографическом порядке, т.е.\& в алфавитном порядке в каждом каталоге. Примечание: .Ql find -s и .Ql "find | sort" могут давать разные результаты. .It Fl x Запретить .Nm спускаться в каталоги, имеющие номер устройства, отличный от такового у файла, с которого начался обход. .Pp Эта опция эквивалентна устаревшему примитиву .Ic -xdev . .El .Sh ПРИМИТИВЫ .Bl -tag -width indent .It Ic -Bmin Ar n Истинен, если разница между временем создания индексного дескриптора (inode) файла и временем запуска .Nm , округлённая до следующей полной минуты, равна .Ar n минут. .It Ic -Bnewer Ar файл То же, что и .Ic -newerBm . .It Ic -Btime Ar n Ns Op Cm smhdw Если единицы времени не указаны, то этот примитив истинен, если разница между временем создания индексного дескриптора (inode) файла и временем запуска .Nm , округлённая до следующего полного 24-часового периода, составляет .Ar n 24-часовых периодов. .Pp Если единицы времени указаны, то этот примитив истинен, если разница между временем создания индексного дескриптора (inode) файла и временем запуска .Nm в точности равна .Ar n единиц. Обратитесь к описанию примитива .Ic -atime для информации о поддерживаемых единицах времени. .It Ic -acl Может быть использован совместно с другими примитивами для поиска файлов с расширенными ACL. Обратитесь к .Xr acl 3 для более подробной информации. .It Ic -amin Ar n Истинен, если разница между временем последнего доступа к файлу и временем запуска .Nm , округлённая до следующей полной минуты, составляет .Ar n минут. .It Ic -anewer Ar файл То же, что и .Ic -neweram . .It Ic -atime Ar n Ns Op Cm smhdw Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего доступа к файлу и временем запуска .Nm , округлённая до следующего полного 24-часового периода, составляет .Ar n 24-часовых периодов. .Pp Если единицы времени указаны, то этот примитив истинен, если разница между временем последнего доступа к файлу и временем запуска .Nm в точности равна .Ar n единиц. Допустимые единицы времени: .Pp .Bl -tag -width indent -compact .It Cm s секунда .It Cm m минута (60 секунд) .It Cm h час (60 минут) .It Cm d день (24 часа) .It Cm w неделя (7 дней) .El .Pp В одном аргументе .Ic -atime могут быть скомбинированы произвольные единицы времени, например, .Dq Li "-atime -1h30m" . Единицы времени скорее всего будут полезны только в сочетании с модификатором .Cm + или .Cm - . .It Ic -cmin Ar n Истинен, если разница между временем последнего изменения статусной информации о файле и временем запуска .Nm , округлённая до следующей полной минуты, равна .Ar n минут. .It Ic -cnewer Ar файл То же, что и .Ic -newercm . .It Ic -ctime Ar n Ns Op Cm smhdw Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего изменения статусной информации о файле и и временем запуска .Nm , округлённая до следующего полного 24-часового периода, составляет .Ar n 24-часовых периодов. .Pp Если единицы времени указаны, то этот примитив истинен, если разница между временем последнего изменения статусной информации о файле и временем запуска .Nm в точности равна .Ar n единиц. Обратитесь к описанию примитива .Ic -atime для информации о поддерживаемых единицах времени. .It Ic -delete Удалить найденные файлы и/или каталоги. Всегда истинен. Исполняется из текущего рабочего каталога, по мере рекурсивного прохода .Nm вниз по дереву. Исходя из соображений безопасности, .Nm не будет пытаться удалять файлы с символом .Dq Pa / в пути относительно .Dq Pa \&. . Эта опция подразумевает обход сначала в глубину. .It Ic -depth Всегда истинен; то же, что и опция .Fl d . .It Ic -depth Ar n Истинен, если глубина файла относительно точки начала обхода равна .Ar n . .It Ic -empty Истинен, если текущий файл или каталог пусты. .It Ic -exec Ar имя_программы Oo Ar аргумент ... Oc Li \&; Истинен, если программа с именем .Ar имя_программы возвращает нулевое значение в качестве статуса завершения. Программе могут быть переданы необязательные аргументы. Выражение должно завершаться точкой с запятой .Pq Dq Li \&; . Если вы запускаете .Nm из командной оболочки (shell), вам может потребоваться экранировать точку с запятой, поскольку в противном случае командная оболочка может воспринять её как управляющий оператор. Если где-либо в имени программы или в аргументах появляется строка .Dq Li {} , то она заменяется на путь текущего файла. Программа будет запущена из каталога, в котором был запущен .Nm . Аргументы .Ar имя_программы и .Ar аргумент не подвержены дальнейшему раскрытию шаблонов и конструкций командной оболочки. .It Ic -exec Ar имя_программы Oo Ar аргумент ... Oc Li {} + То же, что и .Ic -exec , за исключением того, что .Dq Li {} заменяется максимально возможным количеством путей при каждом запуске утилиты. Это поведение аналогично таковому у .Xr xargs 1 . .It Ic -execdir Ar имя_программы Oo Ar аргумент ... Oc Li \&; Примитив .Ic -execdir идентичен примитиву .Ic -exec за исключением того, что программа с именем .Ar имя_программы будет запущена из каталога, содержащего текущий файл. Имя файла, подставляемого вместо строки .Dq Li {} , не содержит пути к нему. .It Ic -flags Oo Cm - Ns | Ns Cm + Oc Ns Ar flags , Ns Ar notflags Флаги задаются указанием символических имён (см.\& .Xr chflags 1 ) . О флагах с префиксом .Qq Li no (за исключением .Qq Li nodump ) говорят, что это .Ar notflags (отрицания флагов). Проверяется, что флаги в наборе .Ar flags установлены, а флаги в наборе .Ar notflags сброшены. Заметьте, что это отличается от примитива .Ic -perm , позволяющего пользователю указать лишь те биты, которые установлены. .Pp Если флагам предшествует минус .Pq Dq Li - , то этот примитив будет истинным, если среди флагов файла установлены по крайней мере все биты из набора .Ar flags и не установлен ни один бит из набора .Ar notflags . Если флагам предшествует плюс .Pq Dq Li + , то этот примитив будет истинным, если среди флагов файла установлен любой из битов набора .Ar flags , или не установлен любой из битов набора .Ar notflags . В противном случае, этот примитив будет истинным, если биты в наборе .Ar flags в точности соответствуют флагам файла, и ни один из битов набора .Ar flags не указан в наборе .Ar notflags . .It Ic -fstype Ar тип Истинен, если файл содержится в файловой системе типа .Ar тип . Для получения доступных в системе типов файловых систем можно воспользоваться командой .Xr sysctl 8 : .Pp .Dl "sysctl vfs" .Pp Кроме того, имеются два псевдо-типа, .Dq Li local и .Dq Li rdonly . Первый задаёт любую файловую систему, физически смонтированную на машине, где запускается .Nm , а второй обозначает любую файловую систему, смонтированную только для чтения. .It Ic -group Ar имя_группы Истинен, если файл принадлежит группе с именем .Ar имя_группы . Если аргумент .Ar имя_группы задан в числовом виде, и не существует такого имени группы, то аргумент .Ar имя_группы трактуется как идентификатор группы (group ID). .It Ic -iname Ar шаблон Подобен .Ic -name , но сравнение не учитывает регистр. .It Ic -inum Ar номер Истинен, если номер индексного дескриптора (inode) файла равен .Ar номер . .It Ic -ipath Ar шаблон Подобен .Ic -path , но сравнение не учитывает регистр. .It Ic -iregex Ar шаблон Подобен .Ic -regex , но сравнение не учитывает регистр. .It Ic -links Ar n Истинен, если файл имеет .Ar n жёстких связей. .It Ic -ls Этот примитив всегда истинен. Для текущего файла в стандартный вывод пишется следующая информация: номер индексного дескриптора (inode), размер в 512-байтных блоках, права доступа к файлу, число жёстких связей (hard links), владелец, группа, размер в байтах, время последнего изменения и путь. Если файл представляет собой специальный файл блочного или символьного устройства, вместо размера выводятся старший (major) и младший (minor) номера устройства. Если файл является символической ссылкой, то после знака .Dq Li -> будет также выведен путь к указываемому файлу. Этот формат идентичен используемому в .Bk -words .Dq Nm ls Fl dgils . .Ek .It Ic -maxdepth Ar n Всегда истинен; заставляет спускаться не более чем на .Ar n уровней каталогов ниже аргументов командной строки. Если присутствует примитив .Ic -maxdepth , он применяется ко всему выражению, даже если в нормальных условиях он бы не вычислялся. .Dq Ic -maxdepth Li 0 ограничивает весь поиск исключительно аргументами командной строки. .It Ic -mindepth Ar n Всегда истинен; не применять любые тесты или действия на уровнях меньше .Ar n . Если присутствует примитив .Ic -mindepth , он применяется ко всему выражению, даже если в нормальных условиях он бы не вычислялся. .Dq Ic -mindepth Li 1 обрабатывает всё, кроме аргументов командной строки. .It Ic -mmin Ar n Истинен, если разница между временем последнего изменения файла и временем запуска .Nm , округлённая до следующей полной минуты, равна .Ar n минут. .It Ic -mnewer Ar файл То же, что и .Ic -newer . .It Ic -mtime Ar n Ns Op Cm smhdw Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего изменения файла и временем запуска .Nm , округлённая до следующего полного 24-часового периода, составляет .Ar n 24-часовых периодов. .Pp Если единицы времени указаны, то этот примитив истинен, если разница между временем последнего изменения файла и временем запуска .Nm в точности равна .Ar n единиц. Обратитесь к описанию примитива .Ic -atime для информации о поддерживаемых единицах времени. .It Ic -name Ar шаблон Истинен, если последний компонент пути файла (его имя) подпадает под .Ar шаблон . В шаблоне могут быть использованы специальные шаблонные символы командной оболочки .Dq ( Li \&[ , .Dq Li \&] , .Dq Li * , и .Dq Li \&? ) . Эти символы могут быть заданы для проверки на совпадение явным образом с помощью экранирования их символом обратной косой черты .Pq Dq Li \e . .It Ic -newer Ar файл Истинен, если текущий файл имеет более позднее время последнего изменения, чем .Ar файл . .It Ic -newer Ns Ar X Ns Ar Y Ar файл Истинен, если текущий файл имеет более позднее время последнего доступа .Pq Ar X Ns = Ns Cm a , время создания индексного дескриптора (inode), т.е.\& самого файла .Pq Ar X Ns = Ns Cm B , время последнего изменения индексного дескриптора .Pq Ar X Ns = Ns Cm c или время последнего изменения файла .Pq Ar X Ns = Ns Cm m , нежели время последнего доступа .Pq Ar Y Ns = Ns Cm a , время создания индексного дескриптора .Pq Ar Y Ns = Ns Cm B , время изменения индексного дескриптора .Pq Ar Y Ns = Ns Cm c или время изменения .Pq Ar Y Ns = Ns Cm m файла .Ar файл . Кроме того, если .Ar Y Ns = Ns Cm t , то аргумент .Ar файл будет интерпретирован не как файл, а как непосредственное указание даты в форме, понятной .Xr cvs 1 . Можно заметить, что использование .Ic -newermm эквивалентно использованию .Ic -newer . .It Ic -nogroup Истинен, если файл принадлежит неизвестной группе. .It Ic -nouser Истинен, если файл принадлежит неизвестному пользователю. .It Ic -ok Ar имя_программы Oo Ar аргумент ... Oc Li \&; Примитив .Ic -ok идентичен примитиву .Ic -exec , за исключением того, что .Nm запросит у пользователя подтверждение на выполнение программы с именем .Ar имя_программы выводом сообщения на терминал и ожиданием ответа. Если ответ не был утвердительным .Ql ( y в локали (locale) .Dq Li POSIX ) , команда не исполняется, и значение примитива .Ic -ok будет ложным. .It Ic -okdir Ar имя_программы Oo Ar аргумент ... Oc Li \&; Примитив .Ic -okdir идентичен примитиву .Ic -execdir , с тем же исключением, что было описано для примитива .Ic -ok . .It Ic -path Ar шаблон Истинен, если рассматриваемый путь подпадает под .Ar шаблон . В шаблоне можно использовать специальные шаблонные символы командной оболочки .Dq ( Li \&[ , .Dq Li \&] , .Dq Li * , и .Dq Li \&? ) . Эти символы могут быть заданы для проверки на совпадение явным образом с помощью экранирования их символом обратной косой черты .Pq Dq Li \e . Прямая косая черта .Pq Dq Li / рассматривается как обычный символ и не требует явного указания для совпадения. .It Ic -perm Oo Cm - Ns | Ns Cm + Oc Ns Ar режим Права доступа в аргументе .Ar режим могут быть заданы либо символически (см.\& .Xr chmod 1 ) , либо восьмеричным числом. Если .Ar режим задан символически, стартовым значением полагается ноль, и .Ar режим устанавливает или сбрасывает права без учёта маски создания файлов процесса. Если .Ar режим задан восьмеричным числом, то только биты 07777 .Pq Dv S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO участвуют в сравнении с правами доступа файла. Если перед аргументом .Ar режим указан минус .Pq Dq Li - , то этот примитив будет истинным, если по крайней мере все биты в аргументе .Ar режим установлены в правах доступа файла. Если перед аргументом .Ar режим указан плюс .Pq Dq Li + , то этот примитив будет истинным, если любой из битов в аргументе .Ar режим установлен в правах доступа файла. В противном случае, этот примитив будет истинным только при точном совпадении битов в аргументе .Ar режим с правами доступа текущего файла. Обратите внимание, что минус .Pq Dq Li - не может быть первым символом при символическом задании прав. .It Ic -print Этот примитив всегда истинен. Он выводит путь текущего файла в стандартный вывод. Если не указан ни один из примитивов .Ic -exec , -ls , -print0 или .Ic -ok , то заданное выражение фактически будет заменено на .Cm \&( Ar "заданное выражение" Cm \&) Ic -print . .It Ic -print0 Этот примитив всегда истинен. Он выводит путь текущего файла в стандартный вывод, и следом за ним символ .Tn ASCII .Dv NUL (символ с кодом 0). .It Ic -prune Этот примитив всегда истинен. Он заставляет .Nm не спускаться в текущий файл. Необходимо отметить, что примитив .Ic -prune не действует при указании опции .Fl d . .It Ic -regex Ar шаблон Истинен, если полный путь файла подпадает под регулярное выражение .Ar шаблон . Для задания файла, именуемого .Dq Pa ./foo/xyzzy , можно использовать регулярные выражения .Dq Li ".*/[xyz]*" или .Dq Li ".*/foo/.*" , но не .Dq Li xyzzy и не .Dq Li /foo/ . .It Ic -size Ar n Ns Op Cm ckMGTP Истинен, если размер файла в 512-байтных блоках, при округлении вверх, равен .Ar n . Если за .Ar n следует .Cm c , то примитив будет истинным, если размер файла равен .Ar n байт (символов). Аналогично, если за .Ar n следует буква множителя, тогда размер файла сравнивается с .Ar n , помноженным на одно из следующих: .Pp .Bl -tag -width indent -compact .It Cm k килобайт (1024 байта) .It Cm M мегабайт (1024 килобайта) .It Cm G гигабайт (1024 мегабайта) .It Cm T терабайт (1024 гигабайта) .It Cm P петабайт (1024 терабайта) .El .It Ic -type Ar тип Истинен, если типом текущего файла является .Ar тип . Возможные типы файлов: .Pp .Bl -tag -width indent -compact .It Cm b блочный специальный .It Cm c символьный специальный .It Cm d каталог .It Cm f обычный файл .It Cm l символическая ссылка .It Cm p именованный канал (FIFO) .It Cm s сокет .El .It Ic -user Ar имя_пользователя Истинен, если файл принадлежит пользователю с именем .Ar имя_пользователя . Если .Ar имя_пользователя задано в числовом виде и такого имени пользователя не существует, то аргумент .Ar имя_пользователя трактуется как идентификатор пользователя (user ID). .El .Pp Все примитивы, принимающие числовой аргумент, допускают задание этого числа со знаком плюс .Pq Dq Li + или минус .Pq Dq Li - . Предшествующий плюс означает .Dq больше n , предшествующий минус означает .Dq меньше n , а отсутствие знака \[em] .Dq ровно n . .Sh ОПЕРАТОРЫ Примитивы могут комбинироваться с использованием нижеследующих операторов. Операторы перечислены в порядке понижения приоритета. .Pp .Bl -tag -width indent -compact .It Cm \&( Ar выражение Cm \&) Будет истинным, если истинно выражение в скобках. .Pp .It Cm \&! Ar выражение .It Cm -false Ar выражение .It Cm -not Ar выражение Это унарный оператор .Tn НЕ . Он будет истинным, если выражение ложно. .Pp .It Ar выражение Cm -and Ar выражение .It Ar выражение выражение Оператор .Cm -and есть логический оператор .Tn И . Поскольку он подразумевается непосредственным соседством двух выражений, его не требуется указывать явно. Выражение истинно, если оба выражения истинны. Второе выражение не вычисляется, если первое выражение ложно. .Pp .It Ar выражение Cm -or Ar выражение Оператор .Cm -or есть логический оператор .Tn ИЛИ . Выражение истинно, если любое из двух выражений истинно. Второе выражение не вычисляется, если первое выражение истинно. .El .Pp Все операнды и примитивы должны быть отдельными аргументами .Nm . Примитивы, имеющие собственные аргументы, ожидают их как отдельные аргументы .Nm . .Sh ОКРУЖЕНИЕ Переменные окружения .Ev LANG , LC_ALL , LC_COLLATE , LC_CTYPE , LC_MESSAGES и .Ev LC_TIME влияют на выполнение утилиты .Nm , как описано в .Xr environ 7 . .Sh ПРИМЕРЫ Нижеследующие примеры показаны в виде, принимаемом командной оболочкой: .Bl -tag -width indent .It Li "find / \e! -name \*q*.c\*q -print" Вывести список всех файлов, имена которых не заканчиваются на .Pa .c . .It Li "find / -newer ttt -user wnj -print" Вывести список всех файлов, принадлежащих пользователю .Dq wnj , которые изменены позднее файла .Pa ttt . .It Li "find / \e! \e( -newer ttt -user wnj \e) -print" Вывести список всех файлов, которые изменены не позднее файла .Pa ttt и одновременно не принадлежат пользователю .Dq wnj . .It Li "find / \e( -newer ttt -or -user wnj \e) -print" Вывести список всех файлов, которые принадлежат пользователю .Dq wnj или изменены позднее файла .Pa ttt . .It Li "find / -newerct '1 minute ago' -print" Вывести список всех файлов, индексный дескриптор которых был изменён не позднее одной минуты назад. .It Li "find / -type f -exec echo {} \e;" Использовать команду .Xr echo 1 для вывода списка всех файлов. .It Li "find -L /usr/ports/packages -type l -delete" Удалить все битые символические ссылки в .Pa /usr/ports/packages . .It Li "find /usr/src -name CVS -prune -o -depth +6 -print" Найти файлы и каталоги, имеющие по крайней мере семь уровней вложенности в рабочем каталоге .Pa /usr/src . .It Li "find /usr/src -name CVS -prune -o -mindepth 7 -print" Это не эквивалентно предыдущему примеру, поскольку .Ic -prune не выполняется ниже уровня семь. .El .Sh СОВМЕСТИМОСТЬ Примитив .Ic -follow устарел; вместо него рекомендуется использовать опцию .Fl L . Подробнее об этом смотрите ниже, в разделе .Sx СТАНДАРТЫ . .Sh СМОТРИ ТАКЖЕ .Xr chflags 1 , .Xr chmod 1 , .Xr cvs 1 , .Xr locate 1 , .Xr whereis 1 , .Xr which 1 , .Xr xargs 1 , .Xr stat 2 , .Xr acl 3 , .Xr fts 3 , .Xr getgrent 3 , .Xr getpwent 3 , .Xr strmode 3 , .Xr re_format 7 , .Xr symlink 7 .Sh СТАНДАРТЫ Синтаксис утилиты .Nm представляет собой надмножество синтаксиса, описанного в стандарте .St -p1003.1-2001 . .Pp Все однобуквенные опции, кроме .Fl H и .Fl L , а также .Ic -amin , -anewer , -cmin , -cnewer , -delete , -empty , -fstype , .Ic -iname , -inum , -iregex , -ls , -maxdepth , -mindepth , -mmin , .Ic -path , -print0 , -regex и все связанные с временем создания примитивы .Ic -B* , представляют собой расширения к стандарту .St -p1003.1-2001 . .Pp Исторически, опции .Fl d , L и .Fl x были реализованы через примитивы .Ic -depth , -follow и .Ic -xdev . Эти примитивы были всегда истинны. Поскольку они фактически были глобальными переменными, вступающими в силу до начала обхода, некоторые допустимые выражения могли иметь неожиданные результаты, например, .Ic -print Cm -o Ic -depth . Поскольку .Ic -print всегда истинен, стандартный порядок вычислений подразумевает, что .Ic -depth никогда не выполнится, что в действительности не так. .Pp Оператор .Cm -or был реализован как .Cm -o , а оператор .Cm -and был реализован как .Cm -a . .Pp Исторические реализации примитивов .Ic -exec и .Ic -ok не заменяли строку .Dq Li {} в имени утилиты и её аргументах, если сразу перед этой строкой или сразу после неё были непробельные символы. Эта версия заменяет её в любом месте в имени утилиты и её аргументах, где бы она ни встретилась. .Pp Опция .Fl E была навеяна одноимённой опцией .Xr grep 1 и .Xr sed 1 . .Sh ИСТОРИЯ Команда .Nm появилась в .At v1 . .Sh ПРОБЛЕМЫ Специальные символы, используемые .Nm , являются также специальными символами для многих командных оболочек. В частности, может потребоваться экранировать от командной оболочки символы .Dq Li * , .Dq Li \&[ , .Dq Li \&] , .Dq Li \&? , .Dq Li \&( , .Dq Li \&) , .Dq Li \&! , .Dq Li \e и .Dq Li \&; . .Pp Поскольку не существует разделителей, отделяющих опции от имён файлов или имена файлов от выражений, трудно задать файлы с именами типа .Pa -xdev или .Pa \&! . Эти проблемы решаются опцией .Fl f и конструкцией .Dq Fl Fl для .Xr getopt 3 . .Pp Примитив .Ic -delete плохо взаимодействует с другими опциями, меняющими порядок обхода дерева файловой системы. .Pp Примитивы .Ic -mindepth и .Ic -maxdepth фактически являются глобальными опциями (как документировано выше). Они, по-видимому, должны быть заменены опциями, выглядящими как опции.