FreeBSD - Утилиты find и xargs. man find на русском языке: различия между версиями
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Admin iph (обсуждение | вклад) (Новая страница: «link=https://bit.ly/3tbFsd6| Самые выгодные сервера? в рунете === FreeBSD - Утилиты find и...») |
Admin iph (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | [[Файл: | + | [[Файл:B_1.gif |link=https://bit.ly/3tbFsd6| Доступная цена]] |
Строка 5: | Строка 5: | ||
− | Опция -name | + | Опция '''-name''' |
% find ~ -name "[A-Z]*" -print | % find ~ -name "[A-Z]*" -print | ||
% find ~ -name "[A-Z]*" -print -o -name ".*" -print | % find ~ -name "[A-Z]*" -print -o -name ".*" -print | ||
-o - логическое ИЛИ | -o - логическое ИЛИ | ||
− | Опция -perm | + | Опция '''-perm''' |
% find ~ perm 755 -print | % find ~ perm 755 -print | ||
− | Опция -user и -nouser <br /> | + | Опция '''-user и -nouser''' <br /> |
Удалить те файлы, владелец которых nobody: | Удалить те файлы, владелец которых nobody: | ||
% find . -user nobody -print -exec rm {} \; | % find . -user nobody -print -exec rm {} \; | ||
Строка 21: | Строка 21: | ||
% find / -nouser -print | % find / -nouser -print | ||
− | Опция -group и -nogroup, аналогично -user и -nouser ищет файлы которые принадлежат группе пользователей или несуществующей группе. | + | Опция '''-group и -nogroup''', аналогично -user и -nouser ищет файлы которые принадлежат группе пользователей или несуществующей группе. |
% find /usr/local/www/nginx/ -group www -print | % find /usr/local/www/nginx/ -group www -print | ||
− | Опция -mtime(когда был осуществлен доступ к файлу) | + | Опция '''-mtime'''(когда был осуществлен доступ к файлу) |
- указывается в днях | - указывается в днях | ||
Строка 33: | Строка 33: | ||
+ - обновлялись 3 дня(осуществлялся доступ) | + - обновлялись 3 дня(осуществлялся доступ) | ||
− | Опция -newer (нахождение файлов, которые обновлялись позже чем старый файл, но раньше чем новый файл) | + | Опция '''-newer''' (нахождение файлов, которые обновлялись позже чем старый файл, но раньше чем новый файл) |
% find / -newer oldfile ! newfile -exex ls -l {} \; | % find / -newer oldfile ! newfile -exex ls -l {} \; | ||
Строка 42: | Строка 42: | ||
ищет все файлы которые обновлялись в течении последних 2-х часов | ищет все файлы которые обновлялись в течении последних 2-х часов | ||
− | Опция -type | + | Опция '''-type''' |
% find / ! -type d -print | % find / ! -type d -print | ||
− | Опция xargs (если при -exec пишет Too many arguments) | + | Опция '''xargs''' (если при -exec пишет Too many arguments) |
% find / -type f -print | xargs file | % find / -type f -print | xargs file | ||
Поиск дампов памяти имена которых помещаются в файл: | Поиск дампов памяти имена которых помещаются в файл: | ||
% find ~ -name "*core" -print | xargs echo > /etc/corelog.txt | % find ~ -name "*core" -print | xargs echo > /etc/corelog.txt | ||
+ | |||
+ | |||
+ | |||
+ | ---------------------------------- | ||
+ | |||
+ | '''man find на русском языке''' | ||
+ | |||
+ | FIND(1) Справочник основных команд FreeBSD FIND(1) <br /> | ||
+ | НАЗВАНИЕ | ||
+ | find -- обход иерархии файлов <br /> | ||
+ | СИНТАКСИС | ||
+ | find [-H | -L | -P] [-EXdsx] [-f путь] путь ... выражение | ||
+ | find [-H | -L | -P] [-EXdsx] -f путь [путь ...] выражение <br /> | ||
+ | ОПИСАНИЕ | ||
+ | Утилита find рекурсивно спускается по дереву каталогов каждого пути, ука- | ||
+ | занного аргументами путь, вычисляя выражение (состоящее из перечисленных | ||
+ | ниже ``примитивов'' и ``операндов'') для каждого файла в дереве. <br /> | ||
+ | Имеются следующие опции: <br /> | ||
+ | -E Интерпретировать регулярные выражения в примитивах -regex и | ||
+ | -iregex как расширенные (современные) регулярные выражения вместо | ||
+ | базовых регулярных выражений (BRE). Страница справочника | ||
+ | re_format(7) полностью описывает оба формата. <br /> | ||
+ | -H Возвращать информацию о файле и его типе (см. stat(2)) для фай- | ||
+ | лов, на которые указывают заданные в командной строке символиче- | ||
+ | ские ссылки, а не для самих ссылок. Если файл, на который указы- | ||
+ | вает ссылка, не существует, информация о файле и его типе будет | ||
+ | возвращена для самой ссылки. Информация о файлах для символиче- | ||
+ | ских ссылок не из командной строки будет возвращаться для самих | ||
+ | ссылок. <br /> | ||
+ | -L Возвращать информацию о файле и его типе (см. stat(2)) для фай- | ||
+ | лов, на которые указывают символические ссылки, а не для самих | ||
+ | ссылок. Если файл, на который указывает ссылка, не существует, | ||
+ | информация о файле и его типе будет возвращена для самой ссылки. <br /> | ||
+ | Эта опция эквивалентна устаревшему примитиву -follow. <br /> | ||
+ | -P Возвращать информацию о файле и его типе (см. stat(2)) для каждой | ||
+ | символической ссылки о самой ссылке. Это поведение по умолчанию. <br /> | ||
+ | -X Позволить безопасное использование find совместно с xargs(1). | ||
+ | Если имя файла содержит любой из символов-разделителей, использу- | ||
+ | емых xargs(1), вывести диагностическое сообщение в стандартный | ||
+ | файл ошибок и пропустить файл. Символы-разделители включают в | ||
+ | себя одиночные (`` ' '') и двойные (`` " '') кавычки, обратную | ||
+ | косую черту (``\''), пробел, табуляцию и символ перевода строки. <br /> | ||
+ | Однако вы можете использовать примитив -print0 совместно с | ||
+ | ``xargs -0'' как эффективную альтернативу. <br /> | ||
+ | -d Заставить find производить обход сначала в глубину, т.е. каталоги | ||
+ | проходятся в пост-порядке, и все элементы каталога обрабатываются | ||
+ | перед самим каталогом. По умолчанию, find проходит каталоги в | ||
+ | пред-порядке, т.е. перед их содержимым. Следует отметить, что | ||
+ | этот режим по умолчанию не является обходом сначала в ширину. <br /> | ||
+ | Эта опция эквивалентна примитиву -depth из IEEE Std 1003.1-2001 | ||
+ | (``POSIX.1''). Опция -d может быть полезной, когда find исполь- | ||
+ | зуется совместно с cpio(1) для обработки файлов в каталогах с | ||
+ | необычными правами доступа. Она обеспечивает вам право на | ||
+ | запись, пока вы помещаете файлы в каталог, a затем, в последнюю | ||
+ | очередь, устанавливает права доступа каталога. <br /> | ||
+ | -f Указать find файловую иерархию для обхода. Файловые иерархии | ||
+ | также могут быть указаны как операнды непосредственно следом за | ||
+ | опциями. <br /> | ||
+ | -s Заставить find обходить файловые иерархии в лексикографическом | ||
+ | порядке, т.е. в алфавитном порядке в каждом каталоге. Примеча- | ||
+ | ние: `find -s' и `find | sort' могут давать разные результаты. <br /> | ||
+ | -x Запретить find спускаться в каталоги, имеющие номер устройства, | ||
+ | отличный от такового у файла, с которого начался обход. <br /> | ||
+ | Эта опция эквивалентна устаревшему примитиву -xdev. <br /> | ||
+ | ПРИМИТИВЫ | ||
+ | -Bmin n | ||
+ | Истинен, если разница между временем создания индексного дескрип- | ||
+ | тора (inode) файла и временем запуска find, округлённая до следу- | ||
+ | ющей полной минуты, равна n минут. <br /> | ||
+ | -Bnewer файл | ||
+ | То же, что и -newerBm. <br /> | ||
+ | -Btime n[smhdw] | ||
+ | Если единицы времени не указаны, то этот примитив истинен, если | ||
+ | разница между временем создания индексного дескриптора (inode) | ||
+ | файла и временем запуска find, округлённая до следующего полного | ||
+ | 24-часового периода, составляет n 24-часовых периодов. <br /> | ||
+ | Если единицы времени указаны, то этот примитив истинен, если раз- | ||
+ | ница между временем создания индексного дескриптора (inode) файла | ||
+ | и временем запуска find в точности равна n единиц. Обратитесь к | ||
+ | описанию примитива -atime для информации о поддерживаемых едини- | ||
+ | цах времени. <br /> | ||
+ | -acl Может быть использован совместно с другими примитивами для поиска | ||
+ | файлов с расширенными ACL. Обратитесь к acl(3) для более подроб- | ||
+ | ной информации. <br /> | ||
+ | -amin n | ||
+ | Истинен, если разница между временем последнего доступа к файлу и | ||
+ | временем запуска find, округлённая до следующей полной минуты, | ||
+ | составляет n минут. <br /> | ||
+ | -anewer файл | ||
+ | То же, что и -neweram. <br /> | ||
+ | -atime n[smhdw] | ||
+ | Если единицы времени не указаны, то этот примитив истинен, если | ||
+ | разница между временем последнего доступа к файлу и временем | ||
+ | запуска find, округлённая до следующего полного 24-часового пери- | ||
+ | ода, составляет n 24-часовых периодов. <br /> | ||
+ | Если единицы времени указаны, то этот примитив истинен, если раз- | ||
+ | ница между временем последнего доступа к файлу и временем запуска | ||
+ | find в точности равна n единиц. Допустимые единицы времени: <br /> | ||
+ | s секунда | ||
+ | m минута (60 секунд) | ||
+ | h час (60 минут) | ||
+ | d день (24 часа) | ||
+ | w неделя (7 дней) <br /> | ||
+ | В одном аргументе -atime могут быть скомбинированы произвольные | ||
+ | единицы времени, например, ``-atime -1h30m''. Единицы времени | ||
+ | скорее всего будут полезны только в сочетании с модификатором + | ||
+ | или -. <br /> | ||
+ | -cmin n | ||
+ | Истинен, если разница между временем последнего изменения статус- | ||
+ | ной информации о файле и временем запуска find, округлённая до | ||
+ | следующей полной минуты, равна n минут. <br /> | ||
+ | -cnewer файл | ||
+ | То же, что и -newercm. <br /> | ||
+ | -ctime n[smhdw] | ||
+ | Если единицы времени не указаны, то этот примитив истинен, если | ||
+ | разница между временем последнего изменения статусной информации | ||
+ | о файле и и временем запуска find, округлённая до следующего пол- | ||
+ | ного 24-часового периода, составляет n 24-часовых периодов. <br /> | ||
+ | Если единицы времени указаны, то этот примитив истинен, если раз- | ||
+ | ница между временем последнего изменения статусной информации о | ||
+ | файле и временем запуска find в точности равна n единиц. Обрати- | ||
+ | тесь к описанию примитива -atime для информации о поддерживаемых | ||
+ | единицах времени. <br /> | ||
+ | -delete | ||
+ | Удалить найденные файлы и/или каталоги. Всегда истинен. Испол- | ||
+ | няется из текущего рабочего каталога, по мере рекурсивного про- | ||
+ | хода find вниз по дереву. Исходя из соображений безопасности, | ||
+ | find не будет пытаться удалять файлы с символом ``/'' в пути | ||
+ | относительно ``.''. Эта опция подразумевает обход сначала в глу- | ||
+ | бину. <br /> | ||
+ | -depth Всегда истинен; то же, что и опция -d. <br /> | ||
+ | -depth n | ||
+ | Истинен, если глубина файла относительно точки начала обхода | ||
+ | равна n. <br /> | ||
+ | -empty Истинен, если текущий файл или каталог пусты. <br /> | ||
+ | -exec имя_программы [аргумент ...] ; | ||
+ | Истинен, если программа с именем имя_программы возвращает нулевое | ||
+ | значение в качестве статуса завершения. Программе могут быть | ||
+ | переданы необязательные аргументы. Выражение должно завершаться | ||
+ | точкой с запятой (``;''). Если вы запускаете find из командной | ||
+ | оболочки (shell), вам может потребоваться экранировать точку с | ||
+ | запятой, поскольку в противном случае командная оболочка может | ||
+ | воспринять её как управляющий оператор. Если где-либо в имени | ||
+ | программы или в аргументах появляется строка ``{}'', то она заме- | ||
+ | няется на путь текущего файла. Программа будет запущена из ката- | ||
+ | лога, в котором был запущен find. Аргументы имя_программы и | ||
+ | аргумент не подвержены дальнейшему раскрытию шаблонов и конструк- | ||
+ | ций командной оболочки. <br /> | ||
+ | -exec имя_программы [аргумент ...] {} + | ||
+ | То же, что и -exec, за исключением того, что ``{}'' заменяется | ||
+ | максимально возможным количеством путей при каждом запуске ути- | ||
+ | литы. Это поведение аналогично таковому у xargs(1). <br /> | ||
+ | -execdir имя_программы [аргумент ...] ; | ||
+ | Примитив -execdir идентичен примитиву -exec за исключением того, | ||
+ | что программа с именем имя_программы будет запущена из каталога, | ||
+ | содержащего текущий файл. Имя файла, подставляемого вместо | ||
+ | строки ``{}'', не содержит пути к нему. <br /> | ||
+ | -flags [-|+]flags,notflags | ||
+ | Флаги задаются указанием символических имён (см. chflags(1)). О | ||
+ | флагах с префиксом "no" (за исключением "nodump") говорят, что | ||
+ | это notflags (отрицания флагов). Проверяется, что флаги в наборе | ||
+ | flags установлены, а флаги в наборе notflags сброшены. Заметьте, | ||
+ | что это отличается от примитива -perm, позволяющего пользователю | ||
+ | указать лишь те биты, которые установлены. <br /> | ||
+ | Если флагам предшествует минус (``-''), то этот примитив будет | ||
+ | истинным, если среди флагов файла установлены по крайней мере все | ||
+ | биты из набора flags и не установлен ни один бит из набора | ||
+ | notflags. Если флагам предшествует плюс (``+''), то этот прими- | ||
+ | тив будет истинным, если среди флагов файла установлен любой из | ||
+ | битов набора flags, или не установлен любой из битов набора | ||
+ | notflags. В противном случае, этот примитив будет истинным, если | ||
+ | биты в наборе flags в точности соответствуют флагам файла, и ни | ||
+ | один из битов набора flags не указан в наборе notflags. <br /> | ||
+ | -fstype тип | ||
+ | Истинен, если файл содержится в файловой системе типа тип. Для | ||
+ | получения доступных в системе типов файловых систем можно вос- | ||
+ | пользоваться командой sysctl(8): <br /> | ||
+ | sysctl vfs <br /> | ||
+ | Кроме того, имеются два псевдо-типа, ``local'' и ``rdonly''. | ||
+ | Первый задаёт любую файловую систему, физически смонтированную на | ||
+ | машине, где запускается find, а второй обозначает любую файловую | ||
+ | систему, смонтированную только для чтения. <br /> | ||
+ | -group имя_группы | ||
+ | Истинен, если файл принадлежит группе с именем имя_группы. Если | ||
+ | аргумент имя_группы задан в числовом виде, и не существует такого | ||
+ | имени группы, то аргумент имя_группы трактуется как идентификатор | ||
+ | группы (group ID). <br /> | ||
+ | -iname шаблон | ||
+ | Подобен -name, но сравнение не учитывает регистр. <br /> | ||
+ | -inum номер | ||
+ | Истинен, если номер индексного дескриптора (inode) файла равен | ||
+ | номер. <br /> | ||
+ | -ipath шаблон | ||
+ | Подобен -path, но сравнение не учитывает регистр. <br /> | ||
+ | -iregex шаблон | ||
+ | Подобен -regex, но сравнение не учитывает регистр. <br /> | ||
+ | -links n | ||
+ | Истинен, если файл имеет n жёстких связей. <br /> | ||
+ | -ls Этот примитив всегда истинен. Для текущего файла в стандартный | ||
+ | вывод пишется следующая информация: номер индексного дескриптора | ||
+ | (inode), размер в 512-байтных блоках, права доступа к файлу, | ||
+ | число жёстких связей (hard links), владелец, группа, размер в | ||
+ | байтах, время последнего изменения и путь. Если файл представ- | ||
+ | ляет собой специальный файл блочного или символьного устройства, | ||
+ | вместо размера выводятся старший (major) и младший (minor) номера | ||
+ | устройства. Если файл является символической ссылкой, то после | ||
+ | знака ``->'' будет также выведен путь к указываемому файлу. Этот | ||
+ | формат идентичен используемому в ``ls -dgils''. <br /> | ||
+ | -maxdepth n | ||
+ | Всегда истинен; заставляет спускаться не более чем на n уровней | ||
+ | каталогов ниже аргументов командной строки. Если присутствует | ||
+ | примитив -maxdepth, он применяется ко всему выражению, даже если | ||
+ | в нормальных условиях он бы не вычислялся. ``-maxdepth 0'' огра- | ||
+ | ничивает весь поиск исключительно аргументами командной строки. <br /> | ||
+ | -mindepth n | ||
+ | Всегда истинен; не применять любые тесты или действия на уровнях | ||
+ | меньше n. Если присутствует примитив -mindepth, он применяется | ||
+ | ко всему выражению, даже если в нормальных условиях он бы не | ||
+ | вычислялся. ``-mindepth 1'' обрабатывает всё, кроме аргументов | ||
+ | командной строки. <br /> | ||
+ | -mmin n | ||
+ | Истинен, если разница между временем последнего изменения файла и | ||
+ | временем запуска find, округлённая до следующей полной минуты, | ||
+ | равна n минут. <br /> | ||
+ | -mnewer файл | ||
+ | То же, что и -newer. <br /> | ||
+ | -mtime n[smhdw] | ||
+ | Если единицы времени не указаны, то этот примитив истинен, если | ||
+ | разница между временем последнего изменения файла и временем | ||
+ | запуска find, округлённая до следующего полного 24-часового пери- | ||
+ | ода, составляет n 24-часовых периодов. <br /> | ||
+ | Если единицы времени указаны, то этот примитив истинен, если раз- | ||
+ | ница между временем последнего изменения файла и временем запуска | ||
+ | find в точности равна n единиц. Обратитесь к описанию примитива | ||
+ | -atime для информации о поддерживаемых единицах времени. <br /> | ||
+ | -name шаблон | ||
+ | Истинен, если последний компонент пути файла (его имя) подпадает | ||
+ | под шаблон. В шаблоне могут быть использованы специальные | ||
+ | шаблонные символы командной оболочки (``['', ``]'', ``*'', и | ||
+ | ``?''). Эти символы могут быть заданы для проверки на совпадение | ||
+ | явным образом с помощью экранирования их символом обратной косой | ||
+ | черты (``\''). <br /> | ||
+ | -newer файл | ||
+ | Истинен, если текущий файл имеет более позднее время последнего | ||
+ | изменения, чем файл. <br /> | ||
+ | -newerXY файл | ||
+ | Истинен, если текущий файл имеет более позднее время последнего | ||
+ | доступа (X=a), время создания индексного дескриптора (inode), | ||
+ | т.е. самого файла (X=B), время последнего изменения индексного | ||
+ | дескриптора (X=c) или время последнего изменения файла (X=m), | ||
+ | нежели время последнего доступа (Y=a), время создания индексного | ||
+ | дескриптора (Y=B), время изменения индексного дескриптора (Y=c) | ||
+ | или время изменения (Y=m) файла файл. Кроме того, если Y=t, то | ||
+ | аргумент файл будет интерпретирован не как файл, а как непосред- | ||
+ | ственное указание даты в форме, понятной cvs(1). Можно заметить, | ||
+ | что использование -newermm эквивалентно использованию -newer. <br /> | ||
+ | -nogroup | ||
+ | Истинен, если файл принадлежит неизвестной группе. <br /> | ||
+ | -nouser | ||
+ | Истинен, если файл принадлежит неизвестному пользователю. <br /> | ||
+ | -ok имя_программы [аргумент ...] ; | ||
+ | Примитив -ok идентичен примитиву -exec, за исключением того, что | ||
+ | find запросит у пользователя подтверждение на выполнение про- | ||
+ | граммы с именем имя_программы выводом сообщения на терминал и | ||
+ | ожиданием ответа. Если ответ не был утвердительным (`y' в локали | ||
+ | (locale) ``POSIX''), команда не исполняется, и значение примитива | ||
+ | -ok будет ложным. <br /> | ||
+ | -okdir имя_программы [аргумент ...] ; | ||
+ | Примитив -okdir идентичен примитиву -execdir, с тем же исключе- | ||
+ | нием, что было описано для примитива -ok. <br /> | ||
+ | -path шаблон | ||
+ | Истинен, если рассматриваемый путь подпадает под шаблон. В | ||
+ | шаблоне можно использовать специальные шаблонные символы команд- | ||
+ | ной оболочки (``['', ``]'', ``*'', и ``?''). Эти символы могут | ||
+ | быть заданы для проверки на совпадение явным образом с помощью | ||
+ | экранирования их символом обратной косой черты (``\''). Прямая | ||
+ | косая черта (``/'') рассматривается как обычный символ и не тре- | ||
+ | бует явного указания для совпадения. <br /> | ||
+ | -perm [-|+]режим | ||
+ | Права доступа в аргументе режим могут быть заданы либо символиче- | ||
+ | ски (см. chmod(1)), либо восьмеричным числом. Если режим задан | ||
+ | символически, стартовым значением полагается ноль, и режим уста- | ||
+ | навливает или сбрасывает права без учёта маски создания файлов | ||
+ | процесса. Если режим задан восьмеричным числом, то только биты | ||
+ | 07777 (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) | ||
+ | участвуют в сравнении с правами доступа файла. Если перед аргу- | ||
+ | ментом режим указан минус (``-''), то этот примитив будет истин- | ||
+ | ным, если по крайней мере все биты в аргументе режим установлены | ||
+ | в правах доступа файла. Если перед аргументом режим указан плюс | ||
+ | (``+''), то этот примитив будет истинным, если любой из битов в | ||
+ | аргументе режим установлен в правах доступа файла. В противном | ||
+ | случае, этот примитив будет истинным только при точном совпадении | ||
+ | битов в аргументе режим с правами доступа текущего файла. Обра- | ||
+ | тите внимание, что минус (``-'') не может быть первым символом | ||
+ | при символическом задании прав. <br /> | ||
+ | -print Этот примитив всегда истинен. Он выводит путь текущего файла в | ||
+ | стандартный вывод. Если не указан ни один из примитивов -exec, | ||
+ | -ls, -print0 или -ok, то заданное выражение фактически будет | ||
+ | заменено на ( заданное выражение ) -print. <br /> | ||
+ | -print0 | ||
+ | Этот примитив всегда истинен. Он выводит путь текущего файла в | ||
+ | стандартный вывод, и следом за ним символ ASCII NUL (символ с | ||
+ | кодом 0). <br /> | ||
+ | -prune Этот примитив всегда истинен. Он заставляет find не спускаться в | ||
+ | текущий файл. Необходимо отметить, что примитив -prune не дей- | ||
+ | ствует при указании опции -d. <br /> | ||
+ | -regex шаблон | ||
+ | Истинен, если полный путь файла подпадает под регулярное выраже- | ||
+ | ние шаблон. Для задания файла, именуемого ``./foo/xyzzy'', можно | ||
+ | использовать регулярные выражения ``.*/[xyz]*'' или | ||
+ | ``.*/foo/.*'', но не ``xyzzy'' и не ``/foo/''. <br /> | ||
+ | -size n[ckMGTP] | ||
+ | Истинен, если размер файла в 512-байтных блоках, при округлении | ||
+ | вверх, равен n. Если за n следует c, то примитив будет истинным, | ||
+ | если размер файла равен n байт (символов). Аналогично, если за n | ||
+ | следует буква множителя, тогда размер файла сравнивается с n, | ||
+ | помноженным на одно из следующих: <br /> | ||
+ | k килобайт (1024 байта) | ||
+ | M мегабайт (1024 килобайта) | ||
+ | G гигабайт (1024 мегабайта) | ||
+ | T терабайт (1024 гигабайта) | ||
+ | P петабайт (1024 терабайта) <br /> | ||
+ | -type тип | ||
+ | Истинен, если типом текущего файла является тип. Возможные типы | ||
+ | файлов: <br /> | ||
+ | b блочный специальный | ||
+ | c символьный специальный | ||
+ | d каталог | ||
+ | f обычный файл | ||
+ | l символическая ссылка | ||
+ | p именованный канал (FIFO) | ||
+ | s сокет <br /> | ||
+ | -user имя_пользователя | ||
+ | Истинен, если файл принадлежит пользователю с именем | ||
+ | имя_пользователя. Если имя_пользователя задано в числовом виде и | ||
+ | такого имени пользователя не существует, то аргумент | ||
+ | имя_пользователя трактуется как идентификатор пользователя (user | ||
+ | ID). <br /> | ||
+ | Все примитивы, принимающие числовой аргумент, допускают задание этого | ||
+ | числа со знаком плюс (``+'') или минус (``-''). Предшествующий плюс | ||
+ | означает ``больше n'', предшествующий минус означает ``меньше n'', а | ||
+ | отсутствие знака -- ``ровно n''. <br /> | ||
+ | ОПЕРАТОРЫ | ||
+ | Примитивы могут комбинироваться с использованием нижеследующих операто- | ||
+ | ров. Операторы перечислены в порядке понижения приоритета. <br /> | ||
+ | ( выражение ) | ||
+ | Будет истинным, если истинно выражение в скобках. <br /> | ||
+ | ! выражение | ||
+ | -false выражение | ||
+ | -not выражение | ||
+ | Это унарный оператор НЕ. Он будет истинным, если выражение | ||
+ | ложно. <br /> | ||
+ | выражение -and выражение | ||
+ | выражение выражение | ||
+ | Оператор -and есть логический оператор И. Поскольку он подразу- | ||
+ | мевается непосредственным соседством двух выражений, его не тре- | ||
+ | буется указывать явно. Выражение истинно, если оба выражения | ||
+ | истинны. Второе выражение не вычисляется, если первое выражение | ||
+ | ложно. <br /> | ||
+ | выражение -or выражение <br /> | ||
+ | Оператор -or есть логический оператор ИЛИ. Выражение истинно, | ||
+ | если любое из двух выражений истинно. Второе выражение не вычис- | ||
+ | ляется, если первое выражение истинно. <br /> | ||
+ | Все операнды и примитивы должны быть отдельными аргументами find. Прими- | ||
+ | тивы, имеющие собственные аргументы, ожидают их как отдельные аргументы | ||
+ | find. <br /> | ||
+ | ОКРУЖЕНИЕ | ||
+ | Переменные окружения LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES и | ||
+ | LC_TIME влияют на выполнение утилиты find, как описано в environ(7). <br /> | ||
+ | ПРИМЕРЫ | ||
+ | Нижеследующие примеры показаны в виде, принимаемом командной оболочкой: <br /> | ||
+ | find / \! -name "*.c" -print | ||
+ | Вывести список всех файлов, имена которых не заканчиваются на .c. <br /> | ||
+ | find / -newer ttt -user wnj -print | ||
+ | Вывести список всех файлов, принадлежащих пользователю ``wnj'', | ||
+ | которые изменены позднее файла ttt. <br /> | ||
+ | find / \! \( -newer ttt -user wnj \) -print | ||
+ | Вывести список всех файлов, которые изменены не позднее файла ttt | ||
+ | и одновременно не принадлежат пользователю ``wnj''. <br /> | ||
+ | find / \( -newer ttt -or -user wnj \) -print | ||
+ | Вывести список всех файлов, которые принадлежат пользователю | ||
+ | ``wnj'' или изменены позднее файла ttt. <br /> | ||
+ | find / -newerct '1 minute ago' -print | ||
+ | Вывести список всех файлов, индексный дескриптор которых был | ||
+ | изменён не позднее одной минуты назад. <br /> | ||
+ | find / -type f -exec echo {} \; | ||
+ | Использовать команду echo(1) для вывода списка всех файлов. <br /> | ||
+ | find -L /usr/ports/packages -type l -delete | ||
+ | Удалить все битые символические ссылки в /usr/ports/packages. <br /> | ||
+ | find /usr/src -name CVS -prune -o -depth +6 -print | ||
+ | Найти файлы и каталоги, имеющие по крайней мере семь уровней вло- | ||
+ | женности в рабочем каталоге /usr/src. <br /> | ||
+ | find /usr/src -name CVS -prune -o -mindepth 7 -print | ||
+ | Это не эквивалентно предыдущему примеру, поскольку -prune не | ||
+ | выполняется ниже уровня семь. <br /> | ||
+ | СОВМЕСТИМОСТЬ | ||
+ | Примитив -follow устарел; вместо него рекомендуется использовать опцию | ||
+ | -L. Подробнее об этом смотрите ниже, в разделе СТАНДАРТЫ. <br /> | ||
+ | СМОТРИ ТАКЖЕ | ||
+ | chflags(1), chmod(1), cvs(1), locate(1), whereis(1), which(1), xargs(1), | ||
+ | stat(2), acl(3), fts(3), getgrent(3), getpwent(3), strmode(3), | ||
+ | re_format(7), symlink(7) <br /> | ||
+ | СТАНДАРТЫ | ||
+ | Синтаксис утилиты find представляет собой надмножество синтаксиса, опи- | ||
+ | санного в стандарте IEEE Std 1003.1-2001 (``POSIX.1''). <br /> | ||
+ | Все однобуквенные опции, кроме -H и -L, а также -amin, -anewer, -cmin, | ||
+ | -cnewer, -delete, -empty, -fstype, -iname, -inum, -iregex, -ls, | ||
+ | -maxdepth, -mindepth, -mmin, -path, -print0, -regex и все связанные с | ||
+ | временем создания примитивы -B*, представляют собой расширения к стан- | ||
+ | дарту IEEE Std 1003.1-2001 (``POSIX.1''). <br /> | ||
+ | Исторически, опции -d, -L и -x были реализованы через примитивы -depth, | ||
+ | -follow и -xdev. Эти примитивы были всегда истинны. Поскольку они фак- | ||
+ | тически были глобальными переменными, вступающими в силу до начала | ||
+ | обхода, некоторые допустимые выражения могли иметь неожиданные резуль- | ||
+ | таты, например, -print -o -depth. Поскольку -print всегда истинен, стан- | ||
+ | дартный порядок вычислений подразумевает, что -depth никогда не выпол- | ||
+ | нится, что в действительности не так. <br /> | ||
+ | Оператор -or был реализован как -o, а оператор -and был реализован как | ||
+ | -a. <br /> | ||
+ | Исторические реализации примитивов -exec и -ok не заменяли строку ``{}'' | ||
+ | в имени утилиты и её аргументах, если сразу перед этой строкой или сразу | ||
+ | после неё были непробельные символы. Эта версия заменяет её в любом | ||
+ | месте в имени утилиты и её аргументах, где бы она ни встретилась. <br /> | ||
+ | Опция -E была навеяна одноимённой опцией grep(1) и sed(1). <br /> | ||
+ | ИСТОРИЯ | ||
+ | Команда find появилась в Version 1 AT&T UNIX. <br /> | ||
+ | ПРОБЛЕМЫ | ||
+ | Специальные символы, используемые find, являются также специальными сим- | ||
+ | волами для многих командных оболочек. В частности, может потребоваться | ||
+ | экранировать от командной оболочки символы ``*'', ``['', ``]'', ``?'', | ||
+ | ``('', ``)'', ``!'', ``\'' и ``;''. <br /> | ||
+ | Поскольку не существует разделителей, отделяющих опции от имён файлов или | ||
+ | имена файлов от выражений, трудно задать файлы с именами типа -xdev или | ||
+ | !. Эти проблемы решаются опцией -f и конструкцией ``--'' для getopt(3). <br /> | ||
+ | Примитив -delete плохо взаимодействует с другими опциями, меняющими поря- | ||
+ | док обхода дерева файловой системы. <br /> | ||
+ | Примитивы -mindepth и -maxdepth фактически являются глобальными опциями | ||
+ | (как документировано выше). Они, по-видимому, должны быть заменены опци- | ||
+ | ями, выглядящими как опции. <br /> | ||
+ | FreeBSD 7.2 13 декабря 2006 FreeBSD 7.2 |
Текущая версия на 18:04, 29 августа 2017
FreeBSD - Утилиты find и xargs. man find на русском языке
Опция -name
% find ~ -name "[A-Z]*" -print % find ~ -name "[A-Z]*" -print -o -name ".*" -print -o - логическое ИЛИ
Опция -perm
% find ~ perm 755 -print
Опция -user и -nouser
Удалить те файлы, владелец которых nobody:
% find . -user nobody -print -exec rm {} \;
Поиск файлов, которые принадлежат пользователей которых нет в /etc/passwd
% find / -nouser -print
Опция -group и -nogroup, аналогично -user и -nouser ищет файлы которые принадлежат группе пользователей или несуществующей группе.
% find /usr/local/www/nginx/ -group www -print
Опция -mtime(когда был осуществлен доступ к файлу)
- указывается в днях
% find /root -mtime -3 -print % find /root -mtime +3 -print
- - не обновлялись 3 дня(не осуществлялся доступ) + - обновлялись 3 дня(осуществлялся доступ)
Опция -newer (нахождение файлов, которые обновлялись позже чем старый файл, но раньше чем новый файл)
% find / -newer oldfile ! newfile -exex ls -l {} \;
(ММДДччмм)
% touch -t 12272130 filestamp
Если сейчас 23-30, то
% find / -newer filestamp -print
ищет все файлы которые обновлялись в течении последних 2-х часов
Опция -type
% find / ! -type d -print
Опция xargs (если при -exec пишет Too many arguments)
% find / -type f -print | xargs file
Поиск дампов памяти имена которых помещаются в файл:
% find ~ -name "*core" -print | xargs echo > /etc/corelog.txt
man find на русском языке
FIND(1) Справочник основных команд FreeBSD FIND(1)
НАЗВАНИЕ find -- обход иерархии файлов
СИНТАКСИС find [-H | -L | -P] [-EXdsx] [-f путь] путь ... выражение find [-H | -L | -P] [-EXdsx] -f путь [путь ...] выражение
ОПИСАНИЕ Утилита find рекурсивно спускается по дереву каталогов каждого пути, ука- занного аргументами путь, вычисляя выражение (состоящее из перечисленных ниже ``примитивов и ``операндов) для каждого файла в дереве.
Имеются следующие опции:
-E Интерпретировать регулярные выражения в примитивах -regex и -iregex как расширенные (современные) регулярные выражения вместо базовых регулярных выражений (BRE). Страница справочника re_format(7) полностью описывает оба формата.
-H Возвращать информацию о файле и его типе (см. stat(2)) для фай- лов, на которые указывают заданные в командной строке символиче- ские ссылки, а не для самих ссылок. Если файл, на который указы- вает ссылка, не существует, информация о файле и его типе будет возвращена для самой ссылки. Информация о файлах для символиче- ских ссылок не из командной строки будет возвращаться для самих ссылок.
-L Возвращать информацию о файле и его типе (см. stat(2)) для фай- лов, на которые указывают символические ссылки, а не для самих ссылок. Если файл, на который указывает ссылка, не существует, информация о файле и его типе будет возвращена для самой ссылки.
Эта опция эквивалентна устаревшему примитиву -follow.
-P Возвращать информацию о файле и его типе (см. stat(2)) для каждой символической ссылки о самой ссылке. Это поведение по умолчанию.
-X Позволить безопасное использование find совместно с xargs(1). Если имя файла содержит любой из символов-разделителей, использу- емых xargs(1), вывести диагностическое сообщение в стандартный файл ошибок и пропустить файл. Символы-разделители включают в себя одиночные (`` ' ) и двойные (`` " ) кавычки, обратную косую черту (``\), пробел, табуляцию и символ перевода строки.
Однако вы можете использовать примитив -print0 совместно с ``xargs -0 как эффективную альтернативу.
-d Заставить find производить обход сначала в глубину, т.е. каталоги проходятся в пост-порядке, и все элементы каталога обрабатываются перед самим каталогом. По умолчанию, find проходит каталоги в пред-порядке, т.е. перед их содержимым. Следует отметить, что этот режим по умолчанию не является обходом сначала в ширину.
Эта опция эквивалентна примитиву -depth из IEEE Std 1003.1-2001 (``POSIX.1). Опция -d может быть полезной, когда find исполь- зуется совместно с cpio(1) для обработки файлов в каталогах с необычными правами доступа. Она обеспечивает вам право на запись, пока вы помещаете файлы в каталог, a затем, в последнюю очередь, устанавливает права доступа каталога.
-f Указать find файловую иерархию для обхода. Файловые иерархии также могут быть указаны как операнды непосредственно следом за опциями.
-s Заставить find обходить файловые иерархии в лексикографическом порядке, т.е. в алфавитном порядке в каждом каталоге. Примеча- ние: `find -s' и `find | sort' могут давать разные результаты.
-x Запретить find спускаться в каталоги, имеющие номер устройства, отличный от такового у файла, с которого начался обход.
Эта опция эквивалентна устаревшему примитиву -xdev.
ПРИМИТИВЫ -Bmin n Истинен, если разница между временем создания индексного дескрип- тора (inode) файла и временем запуска find, округлённая до следу- ющей полной минуты, равна n минут.
-Bnewer файл То же, что и -newerBm.
-Btime n[smhdw] Если единицы времени не указаны, то этот примитив истинен, если разница между временем создания индексного дескриптора (inode) файла и временем запуска find, округлённая до следующего полного 24-часового периода, составляет n 24-часовых периодов.
Если единицы времени указаны, то этот примитив истинен, если раз- ница между временем создания индексного дескриптора (inode) файла и временем запуска find в точности равна n единиц. Обратитесь к описанию примитива -atime для информации о поддерживаемых едини- цах времени.
-acl Может быть использован совместно с другими примитивами для поиска файлов с расширенными ACL. Обратитесь к acl(3) для более подроб- ной информации.
-amin n Истинен, если разница между временем последнего доступа к файлу и временем запуска find, округлённая до следующей полной минуты, составляет n минут.
-anewer файл То же, что и -neweram.
-atime n[smhdw] Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего доступа к файлу и временем запуска find, округлённая до следующего полного 24-часового пери- ода, составляет n 24-часовых периодов.
Если единицы времени указаны, то этот примитив истинен, если раз- ница между временем последнего доступа к файлу и временем запуска find в точности равна n единиц. Допустимые единицы времени:
s секунда m минута (60 секунд) h час (60 минут) d день (24 часа) w неделя (7 дней)
В одном аргументе -atime могут быть скомбинированы произвольные единицы времени, например, ``-atime -1h30m. Единицы времени скорее всего будут полезны только в сочетании с модификатором + или -.
-cmin n Истинен, если разница между временем последнего изменения статус- ной информации о файле и временем запуска find, округлённая до следующей полной минуты, равна n минут.
-cnewer файл То же, что и -newercm.
-ctime n[smhdw] Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего изменения статусной информации о файле и и временем запуска find, округлённая до следующего пол- ного 24-часового периода, составляет n 24-часовых периодов.
Если единицы времени указаны, то этот примитив истинен, если раз- ница между временем последнего изменения статусной информации о файле и временем запуска find в точности равна n единиц. Обрати- тесь к описанию примитива -atime для информации о поддерживаемых единицах времени.
-delete Удалить найденные файлы и/или каталоги. Всегда истинен. Испол- няется из текущего рабочего каталога, по мере рекурсивного про- хода find вниз по дереву. Исходя из соображений безопасности, find не будет пытаться удалять файлы с символом ``/ в пути относительно ``.. Эта опция подразумевает обход сначала в глу- бину.
-depth Всегда истинен; то же, что и опция -d.
-depth n Истинен, если глубина файла относительно точки начала обхода равна n.
-empty Истинен, если текущий файл или каталог пусты.
-exec имя_программы [аргумент ...] ; Истинен, если программа с именем имя_программы возвращает нулевое значение в качестве статуса завершения. Программе могут быть переданы необязательные аргументы. Выражение должно завершаться точкой с запятой (``;). Если вы запускаете find из командной оболочки (shell), вам может потребоваться экранировать точку с запятой, поскольку в противном случае командная оболочка может воспринять её как управляющий оператор. Если где-либо в имени программы или в аргументах появляется строка ``{}, то она заме- няется на путь текущего файла. Программа будет запущена из ката- лога, в котором был запущен find. Аргументы имя_программы и аргумент не подвержены дальнейшему раскрытию шаблонов и конструк- ций командной оболочки.
-exec имя_программы [аргумент ...] {} + То же, что и -exec, за исключением того, что ``{} заменяется максимально возможным количеством путей при каждом запуске ути- литы. Это поведение аналогично таковому у xargs(1).
-execdir имя_программы [аргумент ...] ; Примитив -execdir идентичен примитиву -exec за исключением того, что программа с именем имя_программы будет запущена из каталога, содержащего текущий файл. Имя файла, подставляемого вместо строки ``{}, не содержит пути к нему.
-flags [-|+]flags,notflags Флаги задаются указанием символических имён (см. chflags(1)). О флагах с префиксом "no" (за исключением "nodump") говорят, что это notflags (отрицания флагов). Проверяется, что флаги в наборе flags установлены, а флаги в наборе notflags сброшены. Заметьте, что это отличается от примитива -perm, позволяющего пользователю указать лишь те биты, которые установлены.
Если флагам предшествует минус (``-), то этот примитив будет истинным, если среди флагов файла установлены по крайней мере все биты из набора flags и не установлен ни один бит из набора notflags. Если флагам предшествует плюс (``+), то этот прими- тив будет истинным, если среди флагов файла установлен любой из битов набора flags, или не установлен любой из битов набора notflags. В противном случае, этот примитив будет истинным, если биты в наборе flags в точности соответствуют флагам файла, и ни один из битов набора flags не указан в наборе notflags.
-fstype тип Истинен, если файл содержится в файловой системе типа тип. Для получения доступных в системе типов файловых систем можно вос- пользоваться командой sysctl(8):
sysctl vfs
Кроме того, имеются два псевдо-типа, ``local и ``rdonly. Первый задаёт любую файловую систему, физически смонтированную на машине, где запускается find, а второй обозначает любую файловую систему, смонтированную только для чтения.
-group имя_группы Истинен, если файл принадлежит группе с именем имя_группы. Если аргумент имя_группы задан в числовом виде, и не существует такого имени группы, то аргумент имя_группы трактуется как идентификатор группы (group ID).
-iname шаблон Подобен -name, но сравнение не учитывает регистр.
-inum номер Истинен, если номер индексного дескриптора (inode) файла равен номер.
-ipath шаблон Подобен -path, но сравнение не учитывает регистр.
-iregex шаблон Подобен -regex, но сравнение не учитывает регистр.
-links n Истинен, если файл имеет n жёстких связей.
-ls Этот примитив всегда истинен. Для текущего файла в стандартный вывод пишется следующая информация: номер индексного дескриптора (inode), размер в 512-байтных блоках, права доступа к файлу, число жёстких связей (hard links), владелец, группа, размер в байтах, время последнего изменения и путь. Если файл представ- ляет собой специальный файл блочного или символьного устройства, вместо размера выводятся старший (major) и младший (minor) номера устройства. Если файл является символической ссылкой, то после знака ``-> будет также выведен путь к указываемому файлу. Этот формат идентичен используемому в ``ls -dgils.
-maxdepth n Всегда истинен; заставляет спускаться не более чем на n уровней каталогов ниже аргументов командной строки. Если присутствует примитив -maxdepth, он применяется ко всему выражению, даже если в нормальных условиях он бы не вычислялся. ``-maxdepth 0 огра- ничивает весь поиск исключительно аргументами командной строки.
-mindepth n Всегда истинен; не применять любые тесты или действия на уровнях меньше n. Если присутствует примитив -mindepth, он применяется ко всему выражению, даже если в нормальных условиях он бы не вычислялся. ``-mindepth 1 обрабатывает всё, кроме аргументов командной строки.
-mmin n Истинен, если разница между временем последнего изменения файла и временем запуска find, округлённая до следующей полной минуты, равна n минут.
-mnewer файл То же, что и -newer.
-mtime n[smhdw] Если единицы времени не указаны, то этот примитив истинен, если разница между временем последнего изменения файла и временем запуска find, округлённая до следующего полного 24-часового пери- ода, составляет n 24-часовых периодов.
Если единицы времени указаны, то этот примитив истинен, если раз- ница между временем последнего изменения файла и временем запуска find в точности равна n единиц. Обратитесь к описанию примитива -atime для информации о поддерживаемых единицах времени.
-name шаблон Истинен, если последний компонент пути файла (его имя) подпадает под шаблон. В шаблоне могут быть использованы специальные шаблонные символы командной оболочки (``[, ``], ``*, и ``?). Эти символы могут быть заданы для проверки на совпадение явным образом с помощью экранирования их символом обратной косой черты (``\).
-newer файл Истинен, если текущий файл имеет более позднее время последнего изменения, чем файл.
-newerXY файл Истинен, если текущий файл имеет более позднее время последнего доступа (X=a), время создания индексного дескриптора (inode), т.е. самого файла (X=B), время последнего изменения индексного дескриптора (X=c) или время последнего изменения файла (X=m), нежели время последнего доступа (Y=a), время создания индексного дескриптора (Y=B), время изменения индексного дескриптора (Y=c) или время изменения (Y=m) файла файл. Кроме того, если Y=t, то аргумент файл будет интерпретирован не как файл, а как непосред- ственное указание даты в форме, понятной cvs(1). Можно заметить, что использование -newermm эквивалентно использованию -newer.
-nogroup Истинен, если файл принадлежит неизвестной группе.
-nouser Истинен, если файл принадлежит неизвестному пользователю.
-ok имя_программы [аргумент ...] ; Примитив -ok идентичен примитиву -exec, за исключением того, что find запросит у пользователя подтверждение на выполнение про- граммы с именем имя_программы выводом сообщения на терминал и ожиданием ответа. Если ответ не был утвердительным (`y' в локали (locale) ``POSIX), команда не исполняется, и значение примитива -ok будет ложным.
-okdir имя_программы [аргумент ...] ; Примитив -okdir идентичен примитиву -execdir, с тем же исключе- нием, что было описано для примитива -ok.
-path шаблон Истинен, если рассматриваемый путь подпадает под шаблон. В шаблоне можно использовать специальные шаблонные символы команд- ной оболочки (``[, ``], ``*, и ``?). Эти символы могут быть заданы для проверки на совпадение явным образом с помощью экранирования их символом обратной косой черты (``\). Прямая косая черта (``/) рассматривается как обычный символ и не тре- бует явного указания для совпадения.
-perm [-|+]режим Права доступа в аргументе режим могут быть заданы либо символиче- ски (см. chmod(1)), либо восьмеричным числом. Если режим задан символически, стартовым значением полагается ноль, и режим уста- навливает или сбрасывает права без учёта маски создания файлов процесса. Если режим задан восьмеричным числом, то только биты 07777 (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) участвуют в сравнении с правами доступа файла. Если перед аргу- ментом режим указан минус (``-), то этот примитив будет истин- ным, если по крайней мере все биты в аргументе режим установлены в правах доступа файла. Если перед аргументом режим указан плюс (``+), то этот примитив будет истинным, если любой из битов в аргументе режим установлен в правах доступа файла. В противном случае, этот примитив будет истинным только при точном совпадении битов в аргументе режим с правами доступа текущего файла. Обра- тите внимание, что минус (``-) не может быть первым символом при символическом задании прав.
-print Этот примитив всегда истинен. Он выводит путь текущего файла в стандартный вывод. Если не указан ни один из примитивов -exec, -ls, -print0 или -ok, то заданное выражение фактически будет заменено на ( заданное выражение ) -print.
-print0 Этот примитив всегда истинен. Он выводит путь текущего файла в стандартный вывод, и следом за ним символ ASCII NUL (символ с кодом 0).
-prune Этот примитив всегда истинен. Он заставляет find не спускаться в текущий файл. Необходимо отметить, что примитив -prune не дей- ствует при указании опции -d.
-regex шаблон Истинен, если полный путь файла подпадает под регулярное выраже- ние шаблон. Для задания файла, именуемого ``./foo/xyzzy, можно использовать регулярные выражения ``.*/[xyz]* или ``.*/foo/.*, но не ``xyzzy и не ``/foo/.
-size n[ckMGTP] Истинен, если размер файла в 512-байтных блоках, при округлении вверх, равен n. Если за n следует c, то примитив будет истинным, если размер файла равен n байт (символов). Аналогично, если за n следует буква множителя, тогда размер файла сравнивается с n, помноженным на одно из следующих:
k килобайт (1024 байта) M мегабайт (1024 килобайта) G гигабайт (1024 мегабайта) T терабайт (1024 гигабайта) P петабайт (1024 терабайта)
-type тип Истинен, если типом текущего файла является тип. Возможные типы файлов:
b блочный специальный c символьный специальный d каталог f обычный файл l символическая ссылка p именованный канал (FIFO) s сокет
-user имя_пользователя Истинен, если файл принадлежит пользователю с именем имя_пользователя. Если имя_пользователя задано в числовом виде и такого имени пользователя не существует, то аргумент имя_пользователя трактуется как идентификатор пользователя (user ID).
Все примитивы, принимающие числовой аргумент, допускают задание этого числа со знаком плюс (``+) или минус (``-). Предшествующий плюс означает ``больше n, предшествующий минус означает ``меньше n, а отсутствие знака -- ``ровно n.
ОПЕРАТОРЫ Примитивы могут комбинироваться с использованием нижеследующих операто- ров. Операторы перечислены в порядке понижения приоритета.
( выражение ) Будет истинным, если истинно выражение в скобках.
! выражение -false выражение -not выражение Это унарный оператор НЕ. Он будет истинным, если выражение ложно.
выражение -and выражение выражение выражение Оператор -and есть логический оператор И. Поскольку он подразу- мевается непосредственным соседством двух выражений, его не тре- буется указывать явно. Выражение истинно, если оба выражения истинны. Второе выражение не вычисляется, если первое выражение ложно.
выражение -or выражение
Оператор -or есть логический оператор ИЛИ. Выражение истинно, если любое из двух выражений истинно. Второе выражение не вычис- ляется, если первое выражение истинно.
Все операнды и примитивы должны быть отдельными аргументами find. Прими- тивы, имеющие собственные аргументы, ожидают их как отдельные аргументы find.
ОКРУЖЕНИЕ Переменные окружения LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES и LC_TIME влияют на выполнение утилиты find, как описано в environ(7).
ПРИМЕРЫ Нижеследующие примеры показаны в виде, принимаемом командной оболочкой:
find / \! -name "*.c" -print Вывести список всех файлов, имена которых не заканчиваются на .c.
find / -newer ttt -user wnj -print Вывести список всех файлов, принадлежащих пользователю ``wnj, которые изменены позднее файла ttt.
find / \! \( -newer ttt -user wnj \) -print Вывести список всех файлов, которые изменены не позднее файла ttt и одновременно не принадлежат пользователю ``wnj.
find / \( -newer ttt -or -user wnj \) -print Вывести список всех файлов, которые принадлежат пользователю ``wnj или изменены позднее файла ttt.
find / -newerct '1 minute ago' -print Вывести список всех файлов, индексный дескриптор которых был изменён не позднее одной минуты назад.
find / -type f -exec echo {} \; Использовать команду echo(1) для вывода списка всех файлов.
find -L /usr/ports/packages -type l -delete Удалить все битые символические ссылки в /usr/ports/packages.
find /usr/src -name CVS -prune -o -depth +6 -print Найти файлы и каталоги, имеющие по крайней мере семь уровней вло- женности в рабочем каталоге /usr/src.
find /usr/src -name CVS -prune -o -mindepth 7 -print Это не эквивалентно предыдущему примеру, поскольку -prune не выполняется ниже уровня семь.
СОВМЕСТИМОСТЬ Примитив -follow устарел; вместо него рекомендуется использовать опцию -L. Подробнее об этом смотрите ниже, в разделе СТАНДАРТЫ.
СМОТРИ ТАКЖЕ chflags(1), chmod(1), cvs(1), locate(1), whereis(1), which(1), xargs(1), stat(2), acl(3), fts(3), getgrent(3), getpwent(3), strmode(3), re_format(7), symlink(7)
СТАНДАРТЫ Синтаксис утилиты find представляет собой надмножество синтаксиса, опи- санного в стандарте IEEE Std 1003.1-2001 (``POSIX.1).
Все однобуквенные опции, кроме -H и -L, а также -amin, -anewer, -cmin, -cnewer, -delete, -empty, -fstype, -iname, -inum, -iregex, -ls, -maxdepth, -mindepth, -mmin, -path, -print0, -regex и все связанные с временем создания примитивы -B*, представляют собой расширения к стан- дарту IEEE Std 1003.1-2001 (``POSIX.1).
Исторически, опции -d, -L и -x были реализованы через примитивы -depth, -follow и -xdev. Эти примитивы были всегда истинны. Поскольку они фак- тически были глобальными переменными, вступающими в силу до начала обхода, некоторые допустимые выражения могли иметь неожиданные резуль- таты, например, -print -o -depth. Поскольку -print всегда истинен, стан- дартный порядок вычислений подразумевает, что -depth никогда не выпол- нится, что в действительности не так.
Оператор -or был реализован как -o, а оператор -and был реализован как -a.
Исторические реализации примитивов -exec и -ok не заменяли строку ``{} в имени утилиты и её аргументах, если сразу перед этой строкой или сразу после неё были непробельные символы. Эта версия заменяет её в любом месте в имени утилиты и её аргументах, где бы она ни встретилась.
Опция -E была навеяна одноимённой опцией grep(1) и sed(1).
ИСТОРИЯ Команда find появилась в Version 1 AT&T UNIX.
ПРОБЛЕМЫ Специальные символы, используемые find, являются также специальными сим- волами для многих командных оболочек. В частности, может потребоваться экранировать от командной оболочки символы ``*, ``[, ``], ``?, ``(, ``), ``!, ``\ и ``;.
Поскольку не существует разделителей, отделяющих опции от имён файлов или имена файлов от выражений, трудно задать файлы с именами типа -xdev или !. Эти проблемы решаются опцией -f и конструкцией ``-- для getopt(3).
Примитив -delete плохо взаимодействует с другими опциями, меняющими поря- док обхода дерева файловой системы.
Примитивы -mindepth и -maxdepth фактически являются глобальными опциями (как документировано выше). Они, по-видимому, должны быть заменены опци- ями, выглядящими как опции.
FreeBSD 7.2 13 декабря 2006 FreeBSD 7.2