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

Для удобного поиска нужной информации в системе с Linux существует множество способов. В этой статье рассмотрим, как найти необходимые вам файлы непосредственно через терминал. Выполнить эту функцию можно с помощью специальных команд, таких как locate, whereis, which и самая популярная среди них find.

Утилита find

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

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

Утилита имеет следующий общий синтаксис:

find [options] [path] [expression]

Основные опции:

-name - поиск файла по его имени (с учетом регистра символов);

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

    -name newfile - имеет название newfile;

  -name 'newfile*' - название файла начинается с newfile (например newfile2);

   -name 'newfile??' - название начинается с newfile, после которого идет еще 2 символа;

    -name 'newfile??*' - название начинается с newfile, после которого идет еще 2 или более символа;

    -name '*newfile*' - файлы, которые содержат в своем название слово newfile.

 -iname - поиск по имени без учета регистра;

-type  - указание типа файла:

-user - поиск файла по указанному владельцу;

-group - поиск по группе пользователей;

-perm - по установленным правам доступа;

-size - сортировка по размеру файла, используется с операторами + и -, где:

      +  - файлы больше установленного значения;

      - - файлы меньше установленного значения.

-mtime - по дате последний модификации файлы (в днях), также используется  с операторами + и - (например, +50 - дата последней модификации файла более 50 дней назад). 

-mmin - аналогичная к -mtime но значение уже задается в минутах

-atime  - по последней дате открытия;

-name '*.php' или же '*.txt' - выборка по установленному расширению файла;

-name '.*' - поиск скрытых файлов;

-empty - поиск пустых файлов.

Сам путь можно прописать начиная  с символов так:

       . - поиск в текущем каталоге;

       /  - поиск по необходимому указанному каталогу;

      ~ - поиск в домашней директории.

Наведем несколько практических примеров:

Пример 1: Выполним поиск по названию файла, которое содержит в себе слово test в домашней директории.

find ~ -name '*test*' 

Результат выполнения команды:

[mar***@cp*nl ~]$ find ~ -name '*test*'
/home/mar***t/test1.txt
/home/mar***/test2.txt
/home/mar***/newtest

Пример 2: Выполним поиск по названию файла, которое содержит в себе слово test в домашней директории, но уже с расширением .txt.

find ~ -name '*test*' -name '*.txt'

Результат выполнения команды:

[mar***t@cp*nl ~]$ find ~ -name '*test*' -name '*.txt'
/home/mar***t/test1.txt
/home/mar***/test2.txt

Пример 3. Выполним поиск по название файла, которое начинается с слова orders и имеет размер меньше 10 байт в папках newdata и sale.

find /home/mar***/sale /home/gmar***/newdata -name 'orders*' -size -10b

Результат выполнения команды:

[mar***t@cp*nl ~]$  find /home/mar***/sale /home/mar***/newdata -name 'orders*' -size -10b
/home/mar***t/sale/formounth/orders2.txt
/home/mar***t/sale/orders.txt
/home/mar***/newdata/ordersnew.txt

Команда ГиперХост как всегда желает продуктивной работы, ну и конечно удачных поисков.