Команда find

Команда find используется в linux для осуществления поиска из командной строки. Ниже будут рассмотрены синтаксис, ключи и примеры использования.

Синтаксис команды find

$ find [путь] [опции] [критерии] [действия]

Путь
В качестве пути могут использоваться как абсолютные, так и относительные значения.

Значение Описание
. Поиск от текущего каталога
/ Поиск от корневого каталога
~ Поиск от домашней папки (переменная HOMEDIR)

Опции

Значение Описание
-name шаблон Поиск по шаблону имени файла
-size N[ckMG]
-size +N[ckMG]
-size —N[ckMG]
Размер файла равен N
Размер файла больше N
Размер файла меньше N
с — байт, k — килобайт, M — мегабайт, G — гигабайт
-type f
-type d
Тип — файл
Тип — директория
 -user username  Поиск файлов, принадледащих указанному пользователю
-group groupname Поиск файлов, принадледащих указанной группе
-perm 644
-perm -007
 Поиск файлов с указанными правами
Поиск файлов с учетом только одного указанного бита
-print  Выводит полные имена файлов в стандартный поток вывода
-maxdepth N Максимальная глубина поиска
-mindepth N Минимальная глубина поиска
 -newer filename  Поиск файлов, созданных позднее, чем указанный
 -mount  Поиск файлов только в текущей ФС
-mtime +N
-mtime —N
Поиск файлов, обновлявшихся в течение последних N дней
Поиск файлов, не обновлявшихся в течение последних N дней

Объединение критериев поиска

Оператор Описание
-and Логическое И. Используется для объединения операторов. Возвращиает true, когда выполняются все условия.
-not Логическое НЕ. Используется для исключения.
-or Логическое ИЛИ. Возвращиает true, когда выполняется хотя бы одно из условий.

Для использования указанных операторов, необходимо заключить их в скобки (при этом, скобки выделяются слешом). Пример команды, которая находит в текущем каталоге все файлы размером от 5 до 50 мегабайт:

$ find . \( -size +5M -and -size -50M \)

Действия
Обратите внимание — после большинства действий обязательно ставить \;

Действие Описание
-exec команда \; Выполнить команду для найденного файла
-ok команда \; То же самое, что и exec, но для каждого действия будет запрошено подтверждение пользователя
-execdir команда \; То же самое, что и exec, но выполнение команды происходит из каталога, содержащего файл
-okdir команда \; То же, что и execdir, но запрашивает подтверждения пользователя
-ls Выводит подробную информацию о найденных файлах

Примеры использования команды find

Найти в каталоге /home/user/reports все файлы, название которых начинается на 2016

$ find /home/user/reports -type f -name "2016*"

Найти в домашнем каталоге все файлы с расширением txt и вывести о них подробную информацию

$ find ~ -name “*.txt” -ls

Поиск всех файлов пользователя root в каталоге /etc

$ find /etc -user root

Найти в каталоге /var/www все файлы, которые были обновлены за последнюю неделю.

$ find /var/www -mtime +7 

Найти и показать все каталоги начиная от текущего

$ find . -not -type f

В каталоге /var/log найти и удалить все файлы размером более 500Кб, которые не обновлялись более 10 дней.

$ find /var/log -type f -mtime -10 -size +500k -exec rm {} \;

Выполнение команды можно также передать в xargs, это полезно, когда команда find возвращает большое количество значений.

$ find /home/user -name "*.mp3" | xargs echo > /home/user/mp3list

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *