статьиGNU Free Documentation License материалы взяты из Википедии Статья была изменена. Оригинал статьи.

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 в начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
  • -prune в используется, когда вы хотите исключить из поиска определённые каталоги.

[править] Примеры

[править] Поиск в текущей директории

Найти все файлы, начиная с текущей директории, название которых начинается на 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

[править] Поиск в зависимости от времени создания

Вывести список файлов во всей файловой системе, изменённых в течение последней минуты:

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(1) в страница справки man по пользовательским командам GNU/Linux  (англ.)



Источник в «/w/index.php?title=Find&oldid=44047241»
Пространства имён

Варианты
Действия