Как искать файлы в Linux с помощью команды find. Использование Find и Locate для поиска файлов на сервере Linux Ubuntu как найти файл

Проблема с поиском нужных файлов или папок была, есть, и будет актуальна всегда. Люди постоянно забывают, куда именно они сохранили нужный файл Хрень.doc, или Супер-музня.mp3. Поэтому независимо от вашей операционной системы, поиск файлов или директорий, будет всегда востребован хоть на Linux, на Windows, или MacOS X. Просто инструменты поиска будут разные. Поиск в Linux можно разделить на две категории: графический и консольный. Начнем с гордости всех луниксоидов — с Терминала. Для поиска в Linux есть замечательная программа, под названием find .
Формат написания команды find:
find путь к директории, в которой нужно сделать поиск -опции(ключи)
где путь – это каталог, в котором произвести поиск. Можно указывать следующие пути:

. – произвести поиск в текущем каталоге;
/ – произвести поиск от корневого каталога, т.е. во всей системе;
~ – произвести поиск в домашнем каталоге.
Хотя путь конечно же может, и будет отличаться. Вверху лишь указаны стандартные пути.

Итак, самые главные опции команды find выглядят так:
name — поиск файлов по имени;
user — поиск файлов, которые принадлежат указанному пользователю;
group — поиск файлов, которые принадлежат указанной группе;
perm — поиск файлов с указанным режимом доступа;
type — поиск файлов какого-нибудь типа.

Типов тоже достаточно:

  • b – специальный блочный файл;
  • d – каталог;
  • c – специальный символьный файл;
  • f – обычный файл;
  • l – символическая ссылка;
  • p – именованный канал;
  • s – сокет.

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

А теперь несколько примеров применения команды find.
Самой применяемой опцией является -name, которая ищет файлы по имени.
Например, команда:

find ~ Music -name "*.mp3"

произведет поиск всех файлов (символ *), которые имеют расширение.mp3 в папке Music, которая находится в вашей Домашней директории.

find / -name "*.pdf"

Данная команда произведет поиск файлов с расширением.pdf во всех каталогах, куда вам разрешен доступ. Если программа не может зайти в некоторые системные каталоги, то она вас об этом предупредит. А если вам все таки нужно просмотреть полностью все каталоги, тогда используйте права Суперпользователя:

sudo find / -name "*.pdf"

find ~ -name "Foto*"

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

Ключ `-name’ различает большие и маленькие буквы; для того чтобы во время поиска не обращать внимание на эти критерии, нужно использовать опцию ‘-iname’. Тогда программа найдет все файлы, которые будут состоять из букв: Foto, foto или FOTO.

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

find ~ -name "Foto*" > results.txt

Если вам известно полное имя файла, тогда команда будет следующая:

find / -name .profile

В данном случае будет произведен поиск скрытого файла.profile во всей системе.

Можно произвести поиск файла если известна часть его имени. В таком случае команда будет такой:

find /home/dm/Музыка/Клипы/ -name "*uniform*"

Если вы хотите найти файлы, которые начинаются с каких-то определенных букв (например, от a до c), то в таком случае лучше применить регулярные выражения, которые очень удобны в работе:

find / -name "*"

Данная команда сможет найти все файлы вашей системы, которые начинаются с букв от a до c.

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

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

find . -perm 775

Поиск файлов по пользователю, либо группе.

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

find / -user comp

Эта команда найдет файлы в системе, которые принадлежат пользователю comp.
А для того, чтобы найти файлы, которые принадлежат какой-то определенной группе (например group2), выполним команду:

find / -group group2

Чтобы найти файлы несуществующих пользователей либо групп, нужно использовать опции -nouser и -nogroup:

find / -nouser

find / -nogroup

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

У команды find есть еще одна полезная возможность, можно найти файлы определенного типа. Для этого применим ключ -type. Найдем символические ссылки в каталоге /etc:

find /etc -type l

Найдем список каталогов, которые присутствуют в папке /mnt/raid

find /mnt/raid -type d

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

Ключ -size дает возможность найти файлы нужного вам размера.

find . -size 2000k

Данная команда найдет и покажет на экране файлы, размер которых равен 2 мегабайта, и которые находятся в текущем каталоге. А если например нужно отыскать файлы размером менее 500 килобайт, то в таком случае команда будет такой:

find . -size -500k

Если вам нужно отыскать файлы с размером более 900 мегабайт, то команда будет следующей:

find / -size +900M

Поиск файлов с использованием ключа -mtime

Ключ -mtime дает возможность вам отыскать файлы, которые изменялись в какой-то определенный срок времени.
Например, у нас есть задача найти файлы, которые находятся в папке /home/dm/Video , и которые изменялись за последние 10 дней.

find /home/dm/Video -mtime +10

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

find /home/dm/Video -7

В следующей статье я напишу о графических инструментах поиска в Ubuntu Linux.

Вероятно, Вам знакома такая проблема: Есть файл, и Вы не помните, куда его положили.

В этом случае удобна команда find . Как ее использовать? Конечно, к этой утилите поставляется большая man-страница, но мы рассмотрим некоторые типичные случаи. Просмотреть дерево каталогов, начиная с текущего, и найти файл lostfile.txt:

Если Вы ищете в большом дереве каталогов, команда find может работать довольно медленно. Иногда удобнее использовать команду locate . Она не ищет файл непосредственно в файловой системе, а просматривает свою базу данных. Такой метод намного быстрее, но база данных может устареть. В некоторых дистрибутивах эта база модифицируется каждую ночь. Вы можете время от времени вручную выполнять команду updatedb , чтобы ее модифицировать. locate ищет подстроки:

Допустимое количество орфографических ошибок зависит от длины имени файла, но может быть установлено с помощью опции -t. Чтобы разрешить максимум 2 ошибки и использовать служебный символ просто наберите:

Обзор дерева каталогов

Иногда необходимо получить обзор дерева каталогов. Например, Вы получили новый CD-ROM и хотели бы узнать, что на нем есть. Вы можете просто использовать ls - R . Лично я для удобочитаемости предпочитаю один из следующих способов. Tree (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) отображает дерево каталогов в виде диаграммы.

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

Можно воспользоваться небольшой perl процедурой, работающей с командой ls , которая делает подобные вещи. Ее можно загрузить отсюда: lsperl.gz . Существует много других утилит просмотра дерева каталогов, но для большинства случаев этих вполне достаточно.

Поиск файлов по содержанию (поиск текстовых строк в файлах).

Стандартные утилиты для поиска текстовых строк в файлах - grep / egrep для обычных поисков выражения и fgrep для поиска литеральных строк. Чтобы искать выражение во всех файлах в текущем каталоге, просто наберите:

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

Очень интересная программа поиска - agrep . Agrep работает в основном подобно egrep , но позволяет искать с учетом орфографических ошибок. Чтобы искать выражение и разрешить максимум 2 орфографические ошибки, наберите:

После этого Вы можете искать строку во всех файлах, которые были предварительно индексированы

glimpse -i -2 "search exprission"

glimpse - тоже допускает орфографические ошибки (как и agrep) и -2 указывает, что разрешены две ошибки. glimpse доступен на

Бывает, что вы знаете, что файл или каталог существует, но не знаете, как его найти. Существует несколько команд, которые помогут вам в этом: find , locate и which .

4.10.1. Команда find

Команда find имеет следующий формат:

Find путь образец_для_поиска

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

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

Find . -name tes

Эта команда задает поиск в текущем каталоге всех файлов, содержащих в названии «tes ».

4.10.2. Команда locate

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

Locate dog

Команда locate использует базу данных для определения местонахождения файлов или каталогов, содержащих в названии слово dog . Результаты поиска могут включать файл с названием dog , файл с названием bulldog.txt , каталог с названием /dogs/ и так далее. Чтобы узнать больше о команде locate , обратитесь к ее man-странице (введите в командной строке man locate).

При условии, что база данных обновлена, команда locate осуществляет поиск очень быстро. Обновление базы данных команды locate происходит каждую ночь при помощи службы cron .

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

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

Чтобы обновить базу данных вручную, войдите в систему как root (набрав в командной строке su - и введя пароль root"а) и наберите в командной строке updatedb .

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

Закончив работу, для выполнения которой необходимо быть root"ом, наберите в командной строке exit - вы вернетесь в вашу сессию.

Обновлено: 02.11.2019 Опубликовано: 25.07.2016

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

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

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

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

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

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

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

Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type

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

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype <тип> Тип ругулярного выражения.
-L Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <команда> {} \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

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

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

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

find / -name "file.txt"

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

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

find / -name "*.tmp"

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

Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd

find . -name "sess_*" -a -name "*cd"

* -a: логическое И, -o: логическое ИЛИ.

Поиск по дате

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

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 — искать только файлы.

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

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

find / -perm 0666

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

find / -perm 0600

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

find / -type f -exec grep -i -H "content" {} \;

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

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

find /data -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort -r

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

find /home/user/* -type d -exec chmod 2700 {} \;

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

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

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

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

И добавляем:

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

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

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

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

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

Конечно, поиск файла по имени – самый очевидный способ найти нужный файл.

Для этого используйте:

find -name "query"

Данная команда чувствительна к регистру (то есть, она воспринимает файлы с именем file и File как два разных файла).

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

find -iname "query"

Чтобы найти файлы, которые не совпадают с определенным шаблоном, нужно инвертировать поиск при помощи флагов -not или метасимвола «!». Обратите внимание, при использовании «!» нужно избегать символов, чтобы оболочка bash не интерпретировала «!» еще до выполнения команды find.

find -not -name "query_to_avoid"

find \! -name "query_to_avoid"

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

При помощи параметра «-type» можно указать тип необходимого файла. Это работает так:

find -type type_descriptor query

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

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

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

find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

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

find / -type f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

Фильтрация по времени и размеру

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

Размер файла

Чтобы отфильтровать файлы по размеру, используйте параметр -size.

Также нужно внести суффикс в конце значения, чтобы указать размер:

  • c: байт
  • k: килобайт
  • M: мегабайт
  • G: гигабайт
  • b: блоки по 512 байт

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

find / -size 50c

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

find / -size -50c

Соответственно, чтобы найти файлы, размер которых превышает 700 мегабайт, используйте перед значением символ +; команда имеет такой вид:

find / -size +700M

Поиск в зависимости от времени

Linux хранит данные о access time, modification time и change time.

  • access time: время последнего обращения к файлу (когда файл был прочитан или дописан);
  • modification time: время последнего изменения содержимого файла;
  • change time: время последнего изменения инода (inode) файла.

Для фильтрации файлов по времени используйте параметры «-atime», «-mtime» и «-ctime» соответственно.

Значение данного параметра указывает, сколько дней назад был изменен файл. Как и в случае с размером файла, можно использовать символы – и +, чтобы получить файлы, измененные меньше чем или больше чем n дней назад.

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

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

find / -atime -1

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

find / -ctime +3

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

Это вернет файлы, содержание которых было изменено минуту назад.

Кроме того, команда find может сравнивать файлы и выводить более новые из них:

find / -newer myfile

Поиск по владельцу и привилегиям

С помощью команды find файлы можно искать по владельцу или правам на файл.

Для того используются параметры –user, –group, и -perm соответственно. Например, чтобы найти файл, принадлежащий пользователю с именем syslog, наберите:

find / -user syslog

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

find / -group shadow

Также можно искать файлы с особыми привилегиями.

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

find / -perm 644

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

Чтобы вывести все файлы, привилегии которых больше или равны указанным, используйте синтаксис:

find / -perm -644

Это вернет все файлы с дополнительными привилегиями (например, файл с привилегиями 744).

Фильтрация файлов по глубине

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

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

cd
mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
cd ~/test

Чтобы ознакомиться с только что созданной структурой и проверить, все ли создано правильно, используйте команды ls и cd. Затем вернитесь в тестовый каталог test:

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

find -name file1







./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1

. . .

Эта команда вывела достаточно объемный результат. Передав этот результат в счетчик, можно увидеть, что в итоге выведено 1111 файлов.

find -name file1 | wc -l
1111

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

Для этого можно использовать параметр –maxdepth, чтобы задать максимальную глубину поиска:

find -maxdepth num -name query

Чтобы найти file1 в каталогах level1 и выше, укажите максимальную глубину 2 (1 для каталога верхнего уровня и 1 для каталогов level1).

find -maxdepth 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1

Как видите, данный результат имеет гораздо более удобный вид.

Кроме того, можно указать минимальную глубину поиска:

find -mindepth num -name query

Это используется для поиска файлов, которые находятся в конце ветвей каталога:

find -mindepth 4 -name file
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

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

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

find -mindepth 2 -maxdepth 3 -name file
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .

Выполнение и объединение команд

Утилита find позволяет выполнять любую вспомогательную команду на все найденные файлы; для этого используется параметр –exec. Базовый синтаксис выглядит так:

find параметры_поиска -exec команда_и_параметры {} \;

Символы {} используются в качестве заполнителя для найденных файлов. Символы \; используются для того, чтобы find могла определить, где заканчивается команда.

Для примера можно найти файлы с привилегиями 644 (как в предыдущем разделе) и изменить их привилегии на 664:

cd ~/test
find . -perm 644 -exec chmod 664 {} \;

Затем можно сменить привилегии каталога:

find . -perm 755 -exec chmod 700 {} \;

Чтобы связать несколько результатов, используйте команды -and или -or. Команда –and предполагается, если она опущена.

find . -name file1 -or -name file9

Поиск файлов с помощью команды locate

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

Установить эту команду можно при помощи с apt-get:

sudo apt-get update
sudo apt-get install mlocate

Но почему команда locate быстрее, чем find? Дело в том, что locate зависит от базы данных файлов в файловой системе.

Как правило, cron-скрипт обновляет эту базу данных раз в день; но ее можно обновить и вручную. Запустите эту команду:

Запомните: БД нужно регулярно обновлять, чтобы она содержала актуальные данные; в противном случае найти недавно полученные или созданные файлы будет невозможно.

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

Полученный результат также можно фильтровать.

К примеру, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы выводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно использовать флаг –b (чтоб искать только basename, базовое имя файла):

Чтобы команда locate возвращала только файлы, которые все еще существуют в файловой системе (то есть, файлы, которые не были удалены в промежутке между последним запуском updated и текущим вызовом locate), используйте флаг –е:

Чтобы просмотреть статистику, занесенную командой locate в каталог, используйте опцию –S:

locate -S
Database /var/lib/mlocate/mlocate.db:
3,315 directories
37,228 files
1,504,439 bytes in file names
594,851 bytes used to store database

Итоги

Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Каждая из этих утилит имеет свои преимущества.

Несмотря на то, что команды find и locate сами по себе очень мощны, их действие можно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте фильтровать их результаты при помощи команд wc, sort и grep.

Tags: ,