Logiss.ru

Ваша компьютерная помощь
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Поиск в Linux с помощью команды find

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

find <где искать> <опции>

<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

<опции> — набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.

Также доступны логические операторы:

ОператорОписание
-aЛогическое И. Объединяем несколько критериев поиска.
-oЛогическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или !Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

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

Поиск файла по имени

1. Простой поиск по имени:

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

в) Более компактный вид имеют регулярные выражения, например:

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

а) дате изменения:

find . -type f -newermt "2019-11-02 00:00"

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct "2019-09-09 07:50:00"

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H "content" <> ;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf '%TY-%Tm-%Td %TT %pn' | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf '%TY-%Tm-%Td %TT %pn' | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name "sess_*" -type f -print -exec rm <> ;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name "sess_*" -type f -exec mv <> new_name ;

find . -name "sess_*" -type f | xargs -I '<>' mv <> new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name "*.tmp" | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> ;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name '*.conf' -follow -type f -exec cat <> ; | grep 'test'

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e "s/test/production/g" <> ;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

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

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

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

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> ;

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

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

Команда find в Linux являет одной из самых важной и часто используемых утилит командной строки в Unix подобных операционных системах. Команда find используется для поиска и определения расположения файлов и директорий на основе заданных условий. Эти условия задаются в качестве аргументов при запуске find и охватывают все возможные характеристики файла: имя, права доступа, владелец, группа, размер, время доступа/изменения/создания, тип файла, расширение и прочее. Причём эти все эти характеристики можно комбинировать в любых сочетаниях, а вывод команды find может быть настроен очень гибко.

Для первоначального знакомства с командой find рекомендуется статья:

  • Команда find: поиск в файловой системе по любым свойствам файла

В качестве справочного материала по всем возможностям find рекомендуется:

  • Перевод мануала find

Если вам просто нужно найти файл по имени, то обратите внимание на команду locate — вполне возможно, её окажется вполне достаточно под ваши нужды:

  • 15 полезных практических примеров команды locate в Linux

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

Команды в этой статье сгруппированы по нескольким разделам — от самых базовых до более продвинутых):

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

Поиск файлов по имени в текущей директории

Найти все файлы, чьё имя zalinux.txt в текущей рабочей директории:

Поиск файлов в домашней директории

Найти все папки в директории /home с именем zalinux.txt:

Поиск файлов по имени без учёта регистра

Найти в директории /home все файлы с именем zalinux.txt чьё имя написано как заглавными, так прописными буквами.

Найти директории по имени

Найти все директории, чьё имя Zalinux в директории / (корневой директории).

Поиск PHP файлов по имени

Найти в текущей рабочей директории все файлы php чьё имя zalinux.php.

Найти все PHP файлы в директории

Найти все php файлы в директории.

Часть 2: Поиск файлов на основе их прав доступа (разрешений)

Найти все файлы с правами доступа 777

Найти все файлы, чьи права доступа равны 777 (право на чтение, запись и выполнение пользователем, группой и кем угодно.

Найти все файлы без прав доступа 777

Найти все файлы, разрешение на доступ к которым не равен 777.

Поиск SGID файлов с доступом 644

Найти все файлы с битом SGID чьи права доступа установлены на 644.

Поиск файлов со Sticky Bit с правами доступа 551

Найти все файлы с включённым Sticky Bit права доступа к которым равны 551.

Поиск SUID файлов

Найти все файлы с установленным SUID.

Найти SGID файлы

Найти все файлы у которых установлен SGID:

Найти только файлы с разрешением на чтение

Найти все файлы, к которым есть права на чтение:

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

Найти все файлы, к которым есть права на запись:

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

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

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

Поиск файлов на которые есть права на запись у кого угодно

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

Также обратите внимание, как обозначено право на запись — используется плюс. Это означает, что могут присутствовать и другие права (например, на чтение и выполнение).

Следовать символическим ссылкам и не выводить сообщения об ошибках

При попытке доступа к файлам и папкам на которые недостаточно прав, выводятся сообщения о том, что доступ отклонён. Чтобы этого избежать, используйте после команды конструкцию 2>/dev/null

Если папка для поиска содержит символические ссылки, то по умолчанию команда find не следует им, что команда find переходила по символическим ссылкам, используйте опцию -L

Следующая команда найдёт в папке /tmp все файлы на которые у кого угодно есть права чтения, при встрече символических ссылок она будет переходить по ним, в случае возникновения проблем с доступом, сообщения об ошибках выводиться не будут:

Найти исполнимые файлы

Найти все исполнимые файлы.

Найти все файлы с доступом 777 и изменить их разрешения (chmod) на 644

Найти все файлы с разрешениями равным 777 и использовать команду chmod для установки разрешений на 644:

Найти директории с разрешением 777 и изменить их разрешения (chmod) на 755

Найти все файлы с разрешениями равным 777 и использовать команду chmod для установки разрешений на 755:

Поиск и удаление единичного файла

Найти единичный файл с именем hackware.txt и удалить его:

Поиск и удаление нескольких файлов

Для поиска нескольких типов файлов, таких как .mp3 или .txt и последующего их удаление используйте:

Поиск всех пустых файлов

Для поиска всех пустых файлов по конкретному пути:

Поиск всех пустых директорий

Найти все пустые директории по указанному пути:

Найти все скрытые файлы

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

Часть 3: Поиск файлов на основе их владельцев и групп

Найти файл на основе имени пользователя

Найти все или один файл с именем hackware.txt в / (корневой) директории принадлежащие пользователю root:

Найти все файлы принадлежащие пользователю

Найти все файлы принадлежащие пользователю mial в директории /home:

Найти все файлы принадлежащие группе

Для поиска всех файлов, принадлежащих группе Developer в директории /home:

Найти определённые файлы, принадлежащие пользователю

Чтобы найти все файлы .txt пользователя mial в директории /home:

Часть 4: Поиск файлов и директорий по времени и дате

Найти файлы, которые были изменены определённое время назад

Чтобы найти все файлы, которые были изменены ровно 50 дней назад:

Найти файлы, к которым был получен доступ определённое время назад

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

Найти файлы, изменённые в заданном диапазоне дней

Чтобы найти все файлы, которые были модифицированы более 50 дней назад и менее 100 дней назад:

Поиск файлов, чьи свойства недавно менялись

Чтобы найти файлы, свойства которых (права доступа, владелец, группа) были изменены за последний час:

Поиск недавно модифицированных файлов

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

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

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

Часть 5: Поиск файлов и директорий на основе размера

Поиск файлов определённого размера

Чтобы найти все файлы размером ровно 50MB используйте:

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

Чтобы найти все файлы, чем размер более 50MB и менее 100MB:

Поиск и удаление файлов определённого размера

Чтобы найти все файлы размером ровно 100MB и удалить их, используйте следующую команду:

Поиск файлов с определённым расширением и определённым размером и их удаление

Чтобы найти все .mp3 файла размером более чем 10MB и удалить их в одну команду, используйте:

Часть 6: Поиск нескольких имён файлов (расширений)

Этот раздел посвящён ситуациям, когда нужно одной командой выполнить поиск файлов по нескольким именам или нескольким расширениям.

Предположим что нужно найти все файлы в текущей директории с файловыми расширениями .sh и .txt, это можно сделать следующей командой:

Объяснение предыдущей команды:

  • . (точка) означает текущую директорию
  • -type используется для указания типа файла, мы ищем обычные файлы, которые здесь обозначаются буквой f
  • -name используется для указания шаблона поиска. В данном случае указаны расширения файлов
  • -o означает «ИЛИ»
  • скобки () используются для установки приоритета логических операций

В результате получается следующее:

  • нужно найти файлы И (имя у них "*.sh" ИЛИ имя "*.txt")

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

  • (нужно найти файлы И имя у них "*.sh") ИЛИ имя "*.txt"

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

Для поиска по трём файловым расширениям .sh, .txt and .c используется следующая команда:

И ещё один пример по поиску всех изображений — ищутся файлы по расширениям .png, .jpg, .deb и .pdf:

Как можно понять из приведённых выше команд, добавляя опцию -o («ИЛИ») можно указать любое количество условий. Помните, что логическая операция «ИЛИ» имеет меньший приоритет перед операцией «И». Для операции «И» не требуется специальная опция (хотя она есть), поскольку она подразумевается по умолчанию.

14 примеров практического использования команды find в Linux

Оригинал: 14 Practical Examples of Linux Find Command for Beginners
Автор: Himanshu Arora
Дата публикации: 22 марта 2017 г.
Перевод: А.Панин
Дата перевода: 24 апреля 2017 г.

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

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

1. Вывод списка имен всех файлов из текущей директории и ее поддиректорий

Команда find позволяет быстро вывести список имен всех файлов из текущей директории и ее поддиректорий. Для этого достаточно выполнить рассматриваемую команду без каких-либо аргументов или параметров.

А это вывод команды:

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

2. Поиск файлов по их именам

Если вам понадобится, вы можете использовать команду find для поиска файла по его имени. Параметр -name позволяет сделать это. А это синтаксис команды:

Например, следующая команда позволяет осуществить поиск в текущей директории файла с именем «testfile1.txt» :

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

Но в том случае, если нужно осуществить поиск файла в совершенно не связанной с текущей директорией директории, вам придется передать полный путь к этой директории. Например, следующая команда позволяет осуществить поиск файла в домашних директориях всех пользователей:

3. Поиск файлов определенных типов

Команда find также позволяет осуществлять поиск файлов заданных типов в заданных директориях (и их поддиректориях). Например, следующая команда позволяет осуществить поиск всех файлов с расширением .txt в вашей текущей директории:

Если вы не знаете, символ * является символом-шаблоном. Для ознакомления с дополнительной информацией об этих символах обратитесь к данному материалу .

4. Поиск файлов по их именам без учета регистра

По умолчанию команда find осуществляет поиск файлов с учетом регистра их имен (она рассматривает буквенные символы в верхнем и нижнем регистрах как отличные). Но если вам нужно, вы можете сообщить команде о необходимости осуществления поиска файлов без учета регистра их имен. Вы можете сделать это, воспользовавшись параметром -iname .

Это вывод данной команды:

5. Вывод имен файлов, не соответствующих поисковому шаблону

Если вам нужно, вы можете даже сообщать команде о необходимости вывода имен файлов, которые не соответствуют поисковому шаблону (эта функция называется инвертированным поиском). Вы можете воспользоваться данной функцией посредством оператора ! или -not .

Это вывод данной команды:

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

6. Ограничение глубины поиска файлов

Команда find также позволяет ограничить глубину поиска файлов определенным количеством поддиректорий. Для этого предназначен параметр -maxdepth .

Например, предположим, что имеется следующая структура директорий:

Теперь, если вам нужно осуществить поиск файла лишь до поддиректории «find» (другими словами, проигнорировать поддиректорию «howtoforge» ), вы можете воспользоваться следующей командой:

В данном случае параметр «-maxdepth 3» сообщает команде find о том, что необходимо исследовать лишь три уровня поддиректорий, причем на первом уровне расположена ваша текущая директория (или рабочая директория).

Это вывод данной команды:

Помимо maxdepth существует еще один параметр под названием mindepth (использование: mindepth [N] ). Этот параметр сообщает команде find о том, что следует осуществить переход в поддиректории уровня N перед началом поиска.

В результате поиск файлов будет осуществляться в директории find и ее поддиректориях.

Подводя итог всему сказанному, следует отметить, что если вам нужно осуществить поиск файла с расширением .txt в поддиректориях с уровня 2 по уровень 4, вы можете воспользоваться следующей командой:

7. Вывод имен пустых файлов

При необходимости вы можете использовать команду find для вывода списка всех пустых файлов в определенной директории (и ее поддиректориях). Для этого предназначен параметр -empty .

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

8. Поиск файлов, принадлежащих определенной группе пользователей

Команда find также позволяет осуществлять поиск файлов, принадлежащих определенной группе пользователей, благодаря поддержке параметра -group . Например, следующая команда позволяет вывести список всех файлов из вашей текущей директории и ее поддиректорий, принадлежащих группе пользователей «howtoforge» .

Это вывод приведенной выше команды в моем случае:

9. Поиск файлов, принадлежащих определенному пользователю

Команда find позволяет осуществлять поиск файлов по имени их владельца благодаря поддержке параметра -user . Например, следующая команда выведет имена всех файлов с расширением .txt (присутствующих в вашей текущей директории), владельцем которых является пользователь с именем «himanshu» :

10. Поиск недавно модифицированных файлов

Команда find позволяет осуществлять поиск недавно модифицированных файлов. Для этой цели предназначен параметр -mmin . При использовании данного параметра необходимо передавать числовое значение, соответствующее количеству минут с момента модификации.

Например, если вы хотите осуществить поиск файлов с расширением .txt (в вашей текущей директории), которые были модифицированы 1 минуту назад, вы можете использовать следующую команду:

11. Поиск файлов, модифицированных после указанного файла

Да, команда find позволяет осуществлять поиск даже тех файлов, которые были модифицированы после определенного файла. Для доступа к данной функции должен использоваться параметр -newer , после которого должно передаваться имя файла (с временем модификации которого будет сравниваться время модификации каждого файла, находящегося в текущей директории).

12. Вывод имен всех поддиректорий директории

Помимо всех описанных, существует параметр команды find, позволяющий вывести имена всех поддиректорий текущей директории. Это параметр -type , в качестве значения которого должен передаваться символ d .

Это вывод данной команды в моем случае:

Помимо упомянутого символа d , существуют и другие символы, которые могут передаваться в качестве значения параметра -type . Для ознакомления с их списком следует обратиться к странице руководства.

13. Поиск файлов по номерам соответствующих структур inode

Вы можете передать номер структуры inode команде find для поиска соответствующего ей файла (если таковой существует). Для доступа к данной функции может использоваться параметр -inum , причем в качестве его параметра должен передаваться номер структуры inode.

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

Совет: вы можете получить номер структуры inode, воспользовавшись командой ls -li .

14. Поиск файлов на основе времени последнего доступа

Команда find также позволяет осуществлять поиск файлов на основе времени последнего доступа к ним — вы можете сообщить утилите о том, что нужно вывести имена файлов, которые были открыты N минут назад. Для доступа к этой функции может использоваться параметр -amin .

Например, следующая команда позволяет осуществить поиск файлов с расширением .txt , присутствующих в текущей директории, которые были открыты 1 минуту назад:

Заключение

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

Команда find в Linux – мощный инструмент сисадмина

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

Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

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

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

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

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

  • directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) – критерий, по которым нужно искать файлы;
  • action (действие) – что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.

Поиск по типу файла

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

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

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

Поиск по размеру файла

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • «+» — Поиск файлов больше заданного размера
  • «-» — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).

Единицы измерения файлов:
  • c — Байт
  • k — Кбайт
  • M — Мбайт
  • G — Гбайт

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги.

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.

Поиск по времени доступа

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

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

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

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

Поиск файлов с разрешениями 777.

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы:

  • -and
  • -or
  • -not

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

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

Перед скобками нужно поставить обратный слеш «».

Действия

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

Ссылка на основную публикацию