Команда find в Linux
Команда find в Linux используется для поиска файлов и каталогов в указанном каталоге.
Она может использовать различные параметры для фильтрации и ограничения результатов поиска.
Синтаксис
find [路径] [匹配条件] [动作]
Описание параметра :
PathЭто путь к каталогу для поиска. Это может быть имя каталога или файла, либо несколько путей, разделённых пробелами. Если путь не указан, используется текущий каталог по умолчанию.
expressionЭто необязательный параметр, используемый для указания условия поиска; это может быть имя файла, тип файла, размер файла и т. д.
В условиях сопоставления доступно от двадцати до тридцати параметров. Ниже перечислены наиболее часто используемые из них:
-name pattern: Поиск по имени файла; поддерживаются подстановочные знаки.*и?。-type type: Поиск по типу файла; это может бытьf(обычные файлы),d(каталоги),l(символические ссылки), и т. д.-size [+-]size[cwbkMG]: Поиск по размеру файла; поддерживается использование+или-для указания, что размер больше или меньше указанного; единицей измерения может бытьc(байты),w(слова),b(количество блоков),k(KB),M(MB), илиG(GB).-mtime days: Поиск по времени изменения; поддерживает использование+или-чтобы указать до или после заданного количества дней; days — целое число, обозначающее количество дней.-user username: Поиск по владельцу файла.-group groupname: Поиск по группе файла.
Действия:Необязательно; используются для выполнения операций над совпавшими файлами, таких как удаление, копирование и т. д.
Параметры, связанные со временем, в команде find приведены ниже:
-
-amin n: Найти файлы, к которым обращались в течение n минут. -
-atime n: Найти файлы, к которым обращались в течение n*24 часов. -
-cmin n: Найти файлы, статус которых изменился в течение n минут (например, права доступа). -
-ctime n: Найти файлы, статус которых изменился в течение n*24 часов (например, права доступа). -
-mmin n: Найти файлы, которые были изменены в течение n минут. -
-mtime n: Найти файлы, которые были изменены в течение n*24 часов.
В этих параметрах n может быть положительным числом, отрицательным числом или нулём. Положительное число указывает на файлы, изменённые или к которым осуществлялся доступ в течение указанного времени, отрицательное число указывает на файлы, изменённые или к которым осуществлялся доступ до указанного времени, а ноль указывает на файлы, изменённые или к которым осуществлялся доступ в текущий момент времени.
Положительные числа должны обозначать время до указанного момента, а отрицательные числа — время в пределах указанного периода.
Например:-mtime 0Означает поиск файлов, изменённых сегодня,-mtime -7Означает поиск файлов, изменённых более недели назад.
Пояснение к параметру времени n:
+n: Найти файлы или каталоги старше n дней.
-
-n: Найти файлы или каталоги, атрибуты которых были изменены в течение n дней.
-
n: Найти файлы или каталоги, атрибуты которых были изменены n дней назад (в указанный день).
Примеры
Найти файл с именем file.txt в текущем каталоге:
find . -name file.txt
Перечислить все файлы в текущем каталоге и его подкаталогах с суффиксом.cи вывести список файлов:
# find . -name "*.c"
Перечислить все файлы в текущем каталоге и его подкаталогах:
# find . -type f
Найти файлы размером больше 1MB в каталоге /home:
find /home -size +1M
Найти файлы в каталоге /var/log, изменённые 7 дней назад:
find /var/log -mtime +7
Найти файлы, к которым обращались за последние 7 дней:
find /path/to/search -atime -7
Найти файлы и каталоги, статус которых изменился за последние 20 дней в текущем каталоге:
# find . -ctime 20
Вывести список всех файлов в текущем каталоге и его подкаталогах, которые были обновлены 20 дней назад или раньше:
# find . -ctime +20
Найти обычные файлы в каталоге /var/log, время изменения которых было более 7 дней назад, и запросить подтверждение перед их удалением:
# find /var/log -type f -mtime +7 -ok rm {} \;
Найти файлы в текущем каталоге, в которых владелец файла имеет права на чтение и запись, а группа и остальные пользователи имеют право на чтение:
# find . -type f -perm 644 -exec ls -l {} \;
Найти все обычные файлы с длиной файла 0 в системе и вывести их полные пути:
# find / -type f -size 0 -exec ls -l {} \;
Найти и выполнить операции (например, удалить):
find /path/to/search -name "pattern" -exec rm {} \;
В этом примере,-execопция позволяет выполнить команду,{}будет заменён на имя совпавшего файла,\;указывает на конец команды.
Другие расширения
Энциклопедия команд Linux