Терминал Linux. Команды поиска файлов и директорий

Формат команды find

В общем виде команда find выглядит следующим образом:

где путь – это директория, в которой мы хотим произвести поиск, опции — это ключи-параметры поиска.

Найти и скопировать

Найти и сразу скопировать в текущую директорию

find /usr/share/doc -name '*.pdf' -exec cp {} . \;

Найти в текущей директории

find -name '*.pdf'

Удалить из текущей директории

find -name '*.pdf' -delete

Видео

Найти файлы по типу

Иногда вам может потребоваться поиск определенных типов файлов, таких как обычные файлы, каталоги или символические ссылки. В Linux все является файлом.

Для поиска файлов по их типу используйте параметр -type и один из следующих дескрипторов, чтобы указать тип файла:

  • f : обычный файл
  • d : каталог
  • l : символическая ссылка
  • c : символьные устройства
  • b : блочные устройства
  • p : именованный канал (FIFO)
  • s : сокет

Например, чтобы найти все каталоги в текущем рабочем каталоге , вы должны использовать:

Типичным примером может быть рекурсивное изменение разрешений файлов веб-сайтов на 644 и разрешений каталогов на 755 с помощью команды chmod :

Найти файлы по разрешениям

Параметр -perm позволяет вам искать файлы на основе прав доступа к файлам.

Например, чтобы найти все файлы с разрешениями ровно 775 внутри каталога /var/www/html , вы должны использовать:

Вы можете поставить перед числовым режимом знак минус - или косую черту / .

Когда в качестве префикса используется косая черта / , то по крайней мере одна категория (пользователь, группа или другие) должна иметь по крайней мере соответствующие биты, установленные для соответствия файлу.

Рассмотрим следующий пример команды:

Приведенная выше команда будет соответствовать всем файлам с разрешениями на чтение, установленными для пользователя, группы или других.

Если в качестве префикса используется минус - , то для соответствия файла необходимо установить хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:

Найти файлы по владельцу

Чтобы найти файлы, принадлежащие конкретному пользователю или группе, используйте параметры -user и -group.

Например, для поиска всех файлов и каталогов, принадлежащих пользователю baks, вы должны выполнить:

   Вот пример из реальной жизни. Допустим, вы хотите найти все файлы , принадлежащие пользователю www-data и изменить владельца совпавших файлов из www-data к nginx:

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name — поиск файлов по имени.
  • -perm — поиск файлов в Linux по режиму доступа.
  • -user — поиск файлов по владельцу.
  • -group — поиск по группе.
  • -mtime — поиск по времени модификации файла.
  • -atime — поиск файлов по дате последнего чтения.
  • -nogroup — поиск файлов, не принадлежащих ни одной группе.
  • -nouser — поиск файлов без владельцев.
  • -newer — найти файлы новее чем указанный.
  • -size — поиск файлов в Linux по их размеру.

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

Общий синтаксис команды find, который вы можете найти в справочном руководстве, может показаться не совсем простым, поэтому я приведу более удобный для восприятия:

Путь

В качестве пути для поиска можно использовать как абсолютные, так и относительные пути, а также список путей, разделенных пробелом.

Опции

Опции команды find указываются, начиная с символа «-», за которым следует название опции. Рассмотрим основные опции.

-depth (или -d)Поиск в подкаталогах перед поиском в самом каталоге.
-LПри поиске следовать по символическим ссылкам.
-maxdepth NПри поиске проверять не более чем N вложенных уровней каталогов.
-mindepth NНе проверять вложенные каталоги уровня N и меньше.
-mountНе искать в каталогах других файловых систем.

Критерии поиска

У команды find может быть несколько критериев поиска (их также называют tests). Каждый критерий представляет собой определенное условие проверки, которое возвращает либо true либо false. Это можно сравнить с условиями оператора if в программировании. В процессе обработки очередного файла команда find по очереди проверяет каждый критерий, и если очередной критерий возвращает false, тогда команда find переходит к следующему файлу. Критериев у команды find довольно много, мы рассмотрим только некоторые из них.

-atime NПоследний раз к файлу обращались N дней назад.
-mtime NПоследнее изменение файла было N дней назад.
-name шаблонИмя файла (шаблон имени) без указания пути. Рекомендуется всегда заключать шаблон в кавычки.
-newer другой_файлФайл был изменен позже, чем другой_файл.
-size [±]N[cwbkMG]Размер файла равен N блокам, если указано +N, тогда размер файла больше N, -N — меньше. Символ после N означает размер блока. b — 512 байт, с — байт, w — 2 байта, k — килобайт, M — мегабайт, G — гигабайт.
-type CФайл типа C. Наиболее часто используемые значения для С: d — каталог, f — файл.
-user Имя_пользователяФайл принадлежит пользователю с именем Имя_пользователя.

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

Найти в текущем каталоге обычные файлы (не каталоги), имя которых начинается с символа «~».

Найти в текущем каталоге файлы, измененные позже, чем файл file.bak.

Операторы

Критерии можно объединять, используя операторы. Ниже приведены операторы в порядке убывания их приоритета.

Короткая форма оператораДлинная формаОписание
! критерий-notОтрицание (возвращает true, если критерий false)
критерий1-a критерий2-andОператор И (true, если критерий1 и критерий2 true)
критерий1-o критерий2-orОператор ИЛИ (true, если критерий1 или критерий2 true)

В общем случае при использовании операторов критерии проверяются в порядке их приоритета. Изменить порядок можно с помощью скобок. Скобки нужно выделять с помощью обратного слеша.

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

Найти в текущем каталоге файлы, начинающиеся с символа «~» или c «temp» и являющиеся именно обычными файлами (-type f), а не каталогами.

Найти в текущем каталоге (не обрабатывая подкаталоги — -maxdeph 1) обычные файлы (-file f) размером больше 600 мегабайт и менее 1 гигабайта (-size) или файлы имя которых заканчивающиется на «.mpeg» (-name).

Действия над файлами

Когда выполняется команда find, вы можете выполнять различные действия над найденными файлами. Рассмотрим основные из них.

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

В выполняемых командах вы можете использовать параметр {} в качестве аргумента, который заменяется путем к текущему файлу.

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

Найти в текущем каталоге обычные файлы размером больше 1000 байт и выполнить над ними команду ls -dils (действие ls).

Найти в текущем каталоге обычные файлы, начинающиеся с символа тильда «~», и для каждого файла выдавать запрос на его удаление (на выполнение команды rm).

Основные опции команды find

  • -name — поиск файлов по имени;
  • -user — поиск файлов, принадлежащих указанному пользователю;
  • -type — поиск файлов определенного типа. Вот наиболее используемые типы:

    • d – каталог;
    • f – обычный файл;
    • l – символическая ссылка;
  • -size -n,+n, n — поиск файлов с размером меньше(-), больше (+) или равное n единиц;
  • -mtime -n, +n — поиск файлов, созданных или модифицируемых менее чем (-) или более чем (+) n дней назад.

Поиск файлов по дате изменения

find также может искать файлы на основе их последнего изменения, доступа или изменения времени.

То же, что и при поиске по размеру, используйте символы «плюс» и «минус» для «больше чем» или «меньше чем».

Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в /etc/dovecot/conf.d каталоге, который заканчивается .conf и был изменен за последние пять дней с помощью:

   Вот еще один пример фильтрации файлов по дате изменения с использованием этой -daystart опции. Команда ниже выведет список всех файлов в /homeкаталоге, которые были изменены 30 или несколько дней назад:

-prune: ограничить глубину

С помощью path можно посмотреть содержимое всех поддиректорий code на букву p /code/p* Если нужно посмотреть только поддиректории верхнего уровня — используется -prune

find . -path «./code/p*» -prune

./code/python ./code/php

Получили только поддиректории без их содержимого

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

crontab -e

И добавляем:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00. * полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Теги

Популярные:

Последние:

Adblock
detector
ang probinsyano april 28 2021 teleseryena.com probinsyano latest episode indian saree nude indianclips4u.com karnataka fucking xnxx assam orgyvideos.info www xxnx indian com blu filam makato.mobi kanada xnxx com force xvideo.com alohaporn.net fmovies .in yagate kimi ni naru hentai hentaimangaz.com energy kyouka!! 2 teachers and students sex videos pornorgy.org shraddha srinath nude رسوم سكس 3gpjizz.info بزاز اختى فلمجنس sexpornosikisx.com سكس طلاب مدارس school girl hardcore hindihdporn.com desi cock sucking sex picture indian pornorado.mobi school life sex stories dvdvilla hollywood pornspider.info self porn 添いカノ~ぎゅっと抱きしめて sakurajav.mobi 長月ラム www.animalsexfun.com porntubemania.net porn telugu sex videos kalighat randi indianpornxvideos.net xxx video india