Команда find

#1 2014.01.25 12:17:17

0

find — shell команда для поиска файлов и каталогов. Ниже приведены примеры использования команды и ее опций.

Найти файл filename в текущем каталоге:

find . -name filename

после команды find указываем путь, где будет проводится поиск, ключ -name используется для поиска по имени, после него следует имя директории или файла. В данном примере задан поиск по названию filename в текущем каталоге (. — точка это обозначение текущего каталога).

find . -iname filename

- тот же поиск по имени, описанный выше, но без учета регистра.
Для указания того, что мы ищем именно файл используем ключ «-type»:

find . -type f -name filename

«-type f» — данный ключ указывает что ищем файл (f)
«-type d» — данный ключ указывает что ищем директорию (d)

find . -type d -name dirname

Если необходимо найти все файлы с расширением «.txt», тогда используем звездочку «*».
* — заменяет любой набор символов. Для поиска всех файлов с расширением «.txt» в каталоге /home используем следующую команду:

find /home -type f -name *.txt

Если необходимо найти файлы или папки по дате их создания или последнего доступа к ним, используем ключ «-atime» — поиск по дате последнего доступа к файлу или его созданию:

find . -type f -atime 1

В данном примере представлен поиск всех фалов в текущем каталоге, которые были созданы, изменялись или к ним был получен доступ за прошлые сутки, т.е. больше чем 24 часа и меньше чем 48 часов назад. «-atime n» — считается n*24, то есть в нашем случае 1*24=24 часа назад, и команда ищет именно сколько 24-часовых периодов назад получали доступ к файлу.

Данный пример выполнит поиск по всем файлам к которым был получен доступ более чем 24 назад:

find . -type f -atime +1

Данный пример выполнит поиск по всем файлам к которым был получен доступ более чем 48 часов назад:

find . -type d -atime +2

Данный пример выполнит поиск по всем файлам к которым был получен доступ за последние сутки:

find . -type f -atime -1

Ниже приведены ключи по которым также можно выполнить поиск:
«-ctime n» — по дате создания или изменения статуса файла или директории;
«-mtime n» — поиск файлов, которые были изменены, редактированы, или созданы n*24 часов назад;
«-amin n» — файлы или директории, к которым получали доступ n минут назад;
«-cmin n» — файлы или директории, статус которых был изменен или были они создан n минут назад;
«-mmin» — файлы или директории, которые были изменены или созданы n минут назад.

Для того чтобы выполнить поиск файлов и каталогов по их владельцу, используем ключ «-user»:

find . -name *.txt -user nobody

В данном примере выполнен поиск всех файлов в текущем каталоге с расширением .txt владельцем котрых является пользователь nobody.

Если необходимо по результату поиска выполнить какую-либо команду, то используем ключ «-exec». Ключ «-exec» используется для указания другой команды, которую надо выполнить над каждым аргументом результата поиска. Ниже приведен пример поиска и удаления всех файлов начинающихся с test в директории /home:

find /home -type f -name test* -exec rm -f {} ;

«/home» — выполнить поиск в директории /home
«-type f» — выполнить поиск только по файлам
«-name test*» — все файлы, имя которых начинается из слова «test»
«-exec rm -f {}» — запустить команду удаления «rm -f» для каждого найденного файла
«{}» — заменяет список найденных аргументов
«;» — конец команды