Команда find
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» для каждого найденного файла
«{}» — заменяет список найденных аргументов
«;» — конец команды