FIND(1)

find — поиск файлов.

СИНТАКСИС

find список_поиска выражение

ОПИСАНИЕ

Команда find рекурсивно просматривает каждый из каталогов, перечисленных в списке_поиска, отыскивая файлы, удовлетворяющие логическому выражению, построенному с помощью описанных ниже средств. В список_поиска могут входить и обычные файлы. Далее n обозначает целое десятичное число, на месте которого могут также указываться комбинации +n, что означает «больше, чем n», и -n, что означает «меньше, чем n». Элементарные логические выражения и их результаты:

  • -name шаблон_файлов Истина, если текущий файл удовлетворяет шаблону_файлов. Символы шаблона, имеющие для shell'а специальный смысл, должны быть экранированы.
  • [-perm] [-]восьмеричное_число Истина, если режим доступа к текущему файлу в точности равен восьмеричному_числу [см. chmod.1]. Если перед восьмеричным_числом указан знак -, то для сравнения из режима файла берутся только биты, соответствующие битам восьмеричного_числа, равным единице.
  • -type c Истина, если файл имеет тип c, где c есть b, c, d, p или f — блочный или символьный специальный файл, каталог, именованный канал или обычный файл.
  • -links n Истина, если на файл имеется n ссылок.
  • -user имя_пользователя Истина, если файл принадлежит пользователю с данным именем. Если имя_пользователя является числом и не встречается в файле /etc/passwd, оно рассматривается как идентификатор пользователя.
  • -group имя_группы Истина, если файл принадлежит группе с данным именем. Если имя_группы является числом и не встречается в файле /etc/group, оно рассматривается как идентификатор группы.
  • -size n[c] Истина, если файл занимает n блоков (по 512 байт). Если указана буква c, то размер файла задается в символах. Напомним, что с помощью комбинаций +n и -n можно проверять размер (и три указанные ниже характеристики) не только на равенство, но и на неравенство.
  • -atime n Истина, если последний доступ к файлу производился n дней назад. Сама команда find изменяет время доступа к каталогам, входящим в список_поиска.
  • -mtime n Истина, если файл последний раз модифицировался n дней назад.
  • -ctime n Истина, если характеристики файла (размер, режим доступа) последний раз изменялись n дней назад.
  • -exec команда Истина, если после выполнения команды возвращается нулевой код завершения. Запись команды должна заканчиваться экранированной точкой с запятой. Аргумент команды { } заменяется текущим маршрутным именем файла.
  • -ok команда Эквивалентно -exec за исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе y.
  • -print Всегда истина; вызывает выдачу маршрутного имени текущего файла.
  • -cpio устройство Всегда истина; вызывает вывод текущего файла на указанное устройство в формате CPIO(1) (записями по 5120 байт).
  • -newer файл Истина, если текущий файл был модифицирован позднее указанного файла.
  • -depth Всегда истина; изменяет способ просмотра каталогов: сначала просматриваются входящие в каталог файлы, а затем уже сам каталог. Этот предикат полезен в сочетании с CPIO(1) для переноса файлов из каталогов, на запись в которые нет прав.
  • -mount Всегда истина; ограничивает поиск файловой системой, содержащей указанный в списке_поиска каталог. Если в списке_поиска не указан ни один каталог, используется текущий.
  • -local Истина, если файл физически находится на локальной системе.
  • (выражение) Истина, если истинно заключенное в скобки выражение (скобки должны быть экранированы от интерпретации shell'ом).

Элементарные логические выражения могут комбинироваться с помощью следующих операций (в порядке уменьшения приоритета):

  • Унарная операция отрицания, обозначается !.
  • Логическое И, обозначается пробелом.
  • Логическое ИЛИ, обозначается -o.

ПРИМЕР

  1. Удалить все файлы с именами a.out или *.o, доступ к которым не производился в течение недели:
    find / \( -name a.out -o -name '*.o' \) \
              -atime +7 -exec rm {} \;
  2. Удалить из текущего каталога и его подкаталогов все файлы нулевого размера, запрашивая подтверждение:
    find . -size 0c -ok rm {} \;

ФАЙЛЫ

/etc/passwd
/etc/group

СМ. ТАКЖЕ

chmod.1, CPIO(1), SH(1), test.1.
stat.2, umask.2, cpio.4, fs.4 в Справочнике программиста.

СЮРПРИЗЫ

Команда

find / -depth

всегда завершается неудачей с сообщением

find: stat failed: : No such file or directory

Она исправно обходит все файлы, кроме корневого каталога.

 
man/find.1.txt · Последние изменения: 01.03.2016 в 18:18 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki