Обновлено: 01.02.2022
Опубликовано: 25.07.2016
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Синтаксис
Примеры
Поиск по имени
По дате
По типу файла
По правам
По содержимому
С сортировкой по дате изменения
Лимиты
Действия над найденными объектами
Запуск по расписанию в CRON
Общий синтаксис
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} ; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.
2. Поиск файла по части имени:
find / -name «*.tmp»
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name «sess_*» -a -name «*cd»
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name «sess_*» -o -name «*cd»
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/(sess_.*cd)’
find . -regex ‘.*/(sess_.*|.*cd)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name «*.log»
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
Или в промужутке:
find . -mmin -20 -mmin +10 -type f
* найти все файлы, которые менялись более 10 минут, но не более 20-и.
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
По типу
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* 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. Переместить найденные файлы:
find . -name «sess_*» -type f -exec mv {} /new/path/ ;
* в данном примере мы переместим все найденные файлы в каталог /new/path/.
4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name «*.tmp» | wc -l
5. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} ;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
6. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} ; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
7. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e «s/test/production/g» {} ;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Чистка по расписанию
Команду find удобно использовать для автоматического удаления устаревших файлов.
Открываем на редактирование задания cron:
crontab -e
И добавляем:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} ;
* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.
В операционных системах семейства Linux все объекты ОС являются файлами. Это означает, что не только данные пользователя и настройки системы хранятся в файлах, но и различные механизмы управления системой и коммуникации основаны тоже на файлах. Поэтому поиск файлов очень важен и для новичков будет очень полезно узнать, как найти местоположение того или иного файла, будь то программа, изображение или документ.
В Linux существует множество способов поиска, как в графическом интерфейсе, так и через командную строку. В сегодняшней статье мы разберём, как выполнять поиск файла в Linux с помощью различных инструментов. Но начнём с программ, у которых есть графический интерфейс.
В популярных графических окружениях рабочего стола таких как Gnome или KDE поддерживается поиск файлов прямо в главном меню. Этот поиск выполняется реальном времени и ищет только в самой домашней папке и в нескольких стандартных подпапках, таких как Документы, Загрузки и т д. Кроме того, большинство файловых менеджеров поддерживают поиск файла в выбранной папке и её подпапках. Я не буду рассматривать это в данной статье. Вместо этого давайте сосредоточимся на утилитах, которые позволяют выполнять расширенный поиск файлов.
1. Catfish
Это простая программа для поиска файлов. В ней можно выбрать тип файла для поиска, а также время его изменения. Программа ищет по всей файловой системе, поэтому это может занять довольно много времени. Она ищет не в реальном времени, а использует поисковый индекс mlocate. Вы можете установить Catfish в Ubuntu используя такую команду:
sudo apt install catfish
После запуска программы вы можете сразу же набрать нужный запрос в строке поиска и нажать кнопку со значком лупы, например file1:
Если вы хотите найти только файлы измененные сегодня, выберите соответствующий пункт в левой части окна. Или же вы можете вручную указать интервал, в котором должна находится дата изменения:
Кроме того, утилита поддерживает поиск по содержимому. Для этого нужно включить галочку Показать содержимое файла в настройках:
2. FSearch
Это инструмент для поиска файлов по имени работающий также как и Everything Search Engine. При первом запуске необходимо создать индекс для поиска на основе папок, в которых вы собираетесь искать файлы. Затем вы будете получать результаты поиска сразу же при вводе текста. Программа поддерживает модификаторы по типу файла, символы подстановки, операторы И/ИЛИ, регулярные выражения, сортировку по типу и размеру, а также многое другое. Вы можете найти информацию о том как установить FSearch в вашем дистрибутиве на странице программы на GitHub. При первом запуске окно программы выглядит вот так:
После запуска программы необходимо нажать кнопку Добавить папки и добавить папки, в которых вы хотите выполнять поиск с помощью кнопки со значком плюса:
Также здесь можно настроить параметры поискового индекса и частоту его обновления. Позже, индекс можно настроить открыв Правка -> Параметры -> База данных. После этого вы можете просто начать набирать имя файла в поисковой строке и он сразу же появится в списке:
Можно использовать модификатор по типу файла, например pic: для картинок:
Кроме того доступны такие модификаторы типа файла: file, folder, app, archive, audio, doc, video. Также можно использовать регулярные выражения с помощью модификатора regex:
Или искать по размеру с помощью модификатора size:
Вы можете найти все остальные модификаторы поиска на этой странице.
Существует ещё одна похожая утилита для поиска — это AngrySearch. Но она уже давно не обновлялась и её функциональность примерно такая же как и у fsearch, поэтому я не буду рассматривать её в этой статье.
3. Recoll
Это приложение тоже может выполнять поиск файлов Linux не только по имени, но и по их содержимому. Здесь используется полнотекстовый поисковый движок Xapian. Как и в предыдущем варианте необходимо сначала создать поисковый индекс. Для этого нажмите кнопку Настройка индексирования:
В открывшемся окне вы можете добавить папки, в которых будет выполняться поиск в разделе Каталоги верхнего уровня, а также, поскольку это полнотекстовый индекс, то можно подключить словари словоформ для вашего языка в разделе Языки словоформ. По умолчанию выбрана только ваша домашняя папка:
Когда все настройки будут внесены, нажмите кнопку Ок, а затем Запустить индексирование. В приложении доступно четыре варианта поисковых запросов:
- Любое слово — вхождение хотя бы одного слова из запроса в имя или содержимое;
- Все слова — вхождение всех слов из запроса в имя или содержимое;
- Имя файла — поиск только по имени файла;
- Язык запросов — позволяет формировать сложные запросы с помощью языка запросов Xapian.
Для поиска файлов по имени в Linux выберите тип поиска Имя файла, и наберите запрос. Например:
Для поиска по содержимому выберите Любое слово, Все слова или Язык запросов. Например:
Можно искать по содержимому только в файлах с определённым расширением или вхождением определённых символов в имя файла используя язык запросов. Синтаксис довольно простой: имя_поля:значение. Например, так можно найти все вхождения Losst в файлах, начинающихся на file:
Более подробную информацию про все возможные модификаторы можно найти в официальной документации.
Поиск файлов в Linux по имени через терминал
Если графические утилиты предназначены для обычных пользователей и поиск в домашней папке, то консольные программы предоставляют более гибкие возможности поиска для всех файлов, включая системные и виртуальные и часто используются администраторами и разработчиками.
1. find
Самая часто используемая команда поиска файла Linux на данный момент — это find. Она имеет множество возможностей: вы можете искать файлы по имени, дате изменения или создания, использовать регулярные выражения и маски, выполнять определённые действия для найденных файлов, настраивать глубину поиска и многое другое.
По умолчанию команда find ищет и файлы и каталоги. Если папку не задать явно, то писк будет выполняться в текущей папке. Указать что нужно искать именно файлы можно с помощью опции -type с параметром f, а сам запрос надо указать с помощью опции -name. Например:
find -type f -name "file"
Обратите внимание, что find будет искать файлы, имя которых точно совпадает с вашим запросом. Если вам нужно найти файлы которые содержат определённые символы в имени, используйте символы подстановки, например *:
find -type f -name "file*"
Папку для поиска нужно указать перед остальными параметрами. Например, для того чтобы найти все файлы, которые начинаются на pa в папке /etc/ используйте такую команду:
sudo find /etc/ -type f -name "pa*"
Для того чтобы не учитывать регистр символов при поиске, используйте опцию -iname вместо -name:
sudo find /etc/ -type f -iname "pa*"
Если вы хотите найти файлы только с определённым расширением, это можно сделать указав звездочку перед запросом. Например, для того чтобы получить все файлы .ini выполните:
sudo find /etc/ -type f -name "*.ini"
Более подробную информацию об этой команде читайте в статье команда find в Linux.
2. fd
Это альтернатива команды find, написанная на Rust. Она работает быстрее оригинальной find, поддерживает цветной вывод, поиск по регулярным выражениям, не учитывает скрытые файлы и файлы, перечисленные в .gitignore а также имеет более простой и удобный синтаксис. В Ubuntu утилиту можно установить с помощью следующей команды:
sudo apt install fd-find
Обратите внимание, что в Ubuntu эта команда пишется не fd, как задумали разработчики, а fdfind.
Как и find, эта утилита по умолчанию ищет в текущей папке, но вместо точного сопоставления имени, она ожидает часть имени или регулярное выражение. Например, для того чтобы найти все файлы в текущей папке, которые содержат слово file в имени достаточно команды:
fdfind file
Далее, для того чтобы найти файлы имя которых начинается на pa в папке /etc/ используйте такую команду:
sudo fdfind "^pa" /etc/
Если вам нужно искать файлы по расширению, используйте опцию -e. Например, для поиска всех ini файлов содержащих в имени букву x в папке /etc/ выполните:
sudo fdfind -e ini "x" /etc/
Более подробную информацию об утилите можно найти на её странице GitHub.
3. fzf
Команда fzf предназначена для живого нечеткого поиска файлов по имени. При запуске она показывает список файлов в текущей папке и строку поиска, куда вы можете вводить поисковый запрос, для того чтобы уменьшить количество этих файлов. Список фильтруется в реальном времени и всё работает довольно быстро. Для установки программы в Ubuntu можно использовать такую команду:
sudo apt install fzf
Когда утилита установлена, нужно перейти в папку, в которой вы хотите выполнять поиск. Например, в папку /etc/:
cd /etc/
Теперь запустите утилиту и наберите запрос pass, для того чтобы найти все файлы содержащие в названии pass:
fzf
Наиболее точные совпадения будут ниже всего. Вы можете перемещаться по списку файлов с помощью клавиш вверх и вниз. Для выхода нажмите Enter, и путь к выбранному в данный момент файлу будет выведен в терминал:
Если вы хотите искать вхождения только с начала имени файла, используйте символ ^ перед запросом:
А если только с конца, то символ $. Более подробную информацию можно найти в официальной документации.
4. skim
Это ещё одна утилита для нечеткого поиска в Linux в реальном времени, написанная на Rust. Она может делать почти всё то же самое что и fzf, но более легковесная. Утилиты нет в официальных репозиториях Ubuntu, но вы можете установить её с помощью cargo:
cargo install skim
Как и при использовании fzf вам нужно перейти в папку, в которой будет выполняться поиск. Например:
cd /etc/
Теперь вы можете запустить программу и начать вводить поисковый запрос:
sk
По списку найденных файлов можно перемещаться с помощью клавиш стрелка вверх и вниз. В отличие от fzf здесь также поддерживается командный режим, который позволяет добавить дополнительный уровень фильтрации комбинируя skim с grep или другой утилитой для поиска файлов. Просто укажите команду с помощью опции -c. Например:
sk --ansi -c 'grep -r "{}" .'
После выполнения команды вы увидите не только имена файлов но и их содержимое. Здесь вы можете отфильтровать файлы по имени. Например, только содержащие в пути init.d:
А затем, переключитесь в командный режим с помощью сочетания клавиш Ctrl+Q и наберите запрос уже для поиска по содержимому:
Или же сразу можно перейти в командный режим добавив опцию -i к команде запуска:
sk --ansi -i -c 'grep -r "{}" .'
5. locate
Команда locate считается устаревшей и уже была удалена из многих дистрибутивов. Она выполняет поиск не в реальном времени, как find, а по ранее созданной базе файлов, но она делает только поиск файла по имени Linux. Вы вводите слово, которое вас интересует, и утилита выдаёт все известные ей файлы, имя которых содержит такое слово. Можно использовать регулярные выражения. Например, найдем все файлы, в имени которых содержится passwd:
locate passwd
Обратите внимание, что если файл был добавлен после создания базы, то он найден не будет. Для обновления поискового индекса locate используйте такую команду:
sudo updatedb
Более подробно об этой утилите можно прочитать в статье Команда locate в Linux.
Поиск файлов по содержимому в в терминале
Существует несколько консольных утилит для поиска файлов по их содержимому и они будут подробно описаны в отдельной статье. Это SilverSearcher, ripgrep, ack и другие. Но исторически так сложилось, что самая популярная и часто используемая утилита для поиска текста по файлам это grep. Она поставляется во всех популярных дистрибутивах по умолчанию и её возможностей хватает для большинства задач.
Для того чтобы найти файлы, которые содержат определённую строку достаточно использовать опцию -r и указать папку, в которой надо искать текст. Например, давайте найдём все файлы в /etc/, которые содержат строчку error_reporting:
sudo grep -r "error_reporting" /etc/
С помощью grep очень удобно искать, где находится нужный конфигурационный файл или же проверять не содержат ли файлы с кодом чего-нибудь подозрительного. Подробнее про использование grep читайте в статье команда grep в Linux.
Как узнать расположение исполняемого файла Linux
Это можно сделать с помощью команды whereis. Эта команда достаточно простая и решает только одну задачу. Она показывает, где находится исполняемый файл, переданной ей программы. Например, если мы хотим узнать, в какой папке расположен grep, достаточно выполнить:
whereis grep
Выводы
В этой статье мы разобрали, как выполнить поиск файла в Linux различными способами, начиная от графического интерфейса и заканчивая терминалом. Как видите, здесь есть множество вариантов, которые позволят вам решить любые задачи по поиску файлов.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Загрузить PDF
Загрузить PDF
Найти файл в системе Linux довольно сложно, если не знать, как это сделать. Лучше всего воспользоваться разными командами, которые вводятся в Терминале. Освоив такие команды, вы получите полный контроль над файлами; также эти команды более функциональны, чем аналогичные поисковики в других операционных системах.
-
1
Найдите файл по его имени. Такой простейший поиск выполняется при помощи утилиты find. Приведенная ниже команда будет искать файл в текущем каталоге и во всех его подкаталогах.[1]
- Введите -iname вместо -name, чтобы проигнорировать регистр в веденном имени файла. Команда -name учитывает регистр.
-
2
Начните поиск в корневом каталоге. Чтобы запустить поиск по всей системе, к запросу добавьте модификатор /. В этом случае команда find будет искать файл во всех каталогах, начиная с корневого.
find / -iname "имя файла"
- Можно начать поиск в определенном каталоге; для этого замените / на путь к каталогу, например, /home/max.
- Можно использовать . вместо /, чтобы искать файл только в текущем каталоге и его подкаталогах.
-
3
Используйте символ обобщения .*, чтобы найти файлы, имя которого соответствует части запроса. При помощи символа обобщения * можно найти файл, полное имя которого неизвестно, или найти все файлы с определенным расширением.
find /home/max -iname "*.conf"
- Эта команда найдет все файлы с расширением .conf в папке пользователя Max (и ее подпапках).
- Воспользуйтесь этой командой, чтобы найти все файл, имена которых соответствуют части запроса. Например, если на компьютере хранится множество файлов, связанных с WikiHow, найдите все файлы, введя "*wiki*".
-
4
Облегчите управление результатами поиска. Если результатов поиска слишком много, среди них сложно найти нужный файл. Используйте символ |, чтобы результаты поиска фильтровались командой less. Это облегчит просмотр и фильтрование результатов поиска.
find /home/max -iname "*.conf" | less
-
5
Найдите конкретные элементы. Используйте модификаторы, чтобы в результатах поиска отобразить только определенные элементы. Можно искать обычные файлы (f), каталоги (d), символьные ссылки (l), устройства посимвольного ввода-вывода (с) и блочные устройства (b).
find / -type f -iname "имя файла"
-
6
Отфильтруйте результаты поиска по размеру файлов. Если на компьютере хранится множество файлов с похожими именами, но размер искомого файла известен, отфильтруйте результаты поиска по размеру файлов.
find / -size +50M -iname "имя файла"
- Эта команда найдет все файлы, размер которых превышает 50 МБ. Используйте модификатор + или -, чтобы указать на увеличение или уменьшение размера. Если модификатора + или - нет, команда найдет файлы, размер которых точно совпадает с указанным размером.
- Результаты поиска можно отфильтровать по байтам (c), килобайтам (k), мегабайтам (M), гигабайтам (G) или блокам по 512 байт (b). Обратите внимание, что приведенные модификаторы учитывают регистр.
-
7
Используйте логические операторы (булевы операторы), чтобы объединить поисковые фильтры. Можно использовать операторы -and, -or, -not, чтобы объединить различные поисковые запросы в один запрос.[2]
find /travelphotos -type f -size +200k -not -iname "*2015*"
- Эта команда найдет файлы в папке «Travelphotos», размер которых больше 200 кБ и в именах которых нет числа 2015.
-
8
Найдите файлы по владельцу или разрешениям. Если нужно найти файл, принадлежащий конкретному пользователю, или файл с определенными правами доступа, можно сузить поиск.
find / -user max -iname "имя файла" find / -group users -iname "имя файла" find / -perm 777 -iname "имя файла"
- Приведенные выше команды найдут файл определенного пользователя, группы или с конкретными правами доступа. Также в запросе имя файла можно опустить, чтобы найти все файлы, соответствующие указанным критериям. Например, команда find / -perm 777 найдет все файлы с правами доступа 777 (без ограничений).[3]
- Приведенные выше команды найдут файл определенного пользователя, группы или с конкретными правами доступа. Также в запросе имя файла можно опустить, чтобы найти все файлы, соответствующие указанным критериям. Например, команда find / -perm 777 найдет все файлы с правами доступа 777 (без ограничений).[3]
-
9
Объедините команды, чтобы выполнить определенные действия по завершении поиска файлов. Команду find можно объединить с другими командами, которые обработают найденные файлы. Для этого между командой find и второй командой введите -exec, а в конце строки введите {} ;
find . -type f -perm 777 -exec chmod 755 {} ;
- Эта команда найдет в текущем каталоге (и его подкаталогах) все файлы с правами доступа 777, а потом при помощи команды chmod права доступа изменятся на 755.
Реклама
-
1
Установите утилиту .locate. Эта утилита работает быстрее утилиты find, потому что не сканирует файловую систему по-настоящему. Однако, не все дистрибутивы Linux поставляются с утилитой locate, поэтому введите следующие команды, чтобы установить ее:
- Введите sudo apt-get update и нажмите ↵ Enter.
- В Debian и Ubuntu сделайте следующее: введите sudo apt-get install mlocate и нажмите ↵ Enter. Если locate уже установлена, отобразится сообщение mlocate is already the newest version (Установлена последняя версия).
- В Arch Linux используйте менеджер пакетов pacman: pacman -Syu mlocate
- В Gentoo используйте emerge: emerge mlocate
-
2
Обновите базу утилиты .locate. Эта утилита не сможет найти что-либо без предварительно созданной и обновленной базы (в которой хранится подобие слепка с файловой системы).
База обновляется ежедневно в автоматическом режиме, но это можно сделать и вручную. Обновите базу вручную, чтобы незамедлительно приступить к работе с locate.[4]
- Введите sudo updatedb и нажмите ↵ Enter.
-
3
Используйте .locate, чтобы выполнять простые поисковые запросы. Утилита locate работает быстро, но она не так функциональна, как утилита find. Команда locate обрабатывает простые поисковые запросы аналогично команде find.
- Эта команда найдет (во всей системе) все файлы с расширением .jpg. Здесь символ обобщения * работает так же, как у команды find.
- Как и у команды find, модификатор -i игнорирует регистр поискового запроса.
-
4
Ограничьте количество результатов поиска. Если результатов поиска слишком много, сократите их при помощи модификатора -n и числа, которое определяет количество отображаемых результатов поиска.
- Эта команда приведет к отображению первых 20 результатов, которые соответствуют поисковому запросу.
- Также можно использовать символ |, чтобы результаты поиска фильтровались командой less. Это облегчит просмотр результатов поиска.
Реклама
.
-
1
Используйте команду .grep, чтобы искать текст в файлах. Сделайте это, чтобы найти файл, который содержит определенную фразу или строку. Основной формат команды grep выглядит следующим образом:
grep -r -i "поисковый запрос" /путь/к/каталогу/
- Модификатор -r делает поиск рекурсивным, поэтому в текущем каталоге (и всех подкаталогах) будет найден любой файл, содержащий строку из поискового запроса.
- Модификатор -i указывает на то, что запрос не учитывает регистр. Чтобы учесть регистр, не вводите модификатор -i.
-
2
Скройте лишний текст. При выполнении команды grep (как описано выше) на экране отобразится имя файла и текст с выделенной фразой или строкой, указанной в поисковом запросе. Такой текст можно скрыть, чтобы отобразить только имя файла и путь к нему. Для этого введите следующую команду:
grep -r -i "поисковый запрос" /путь/к/каталогу/ | cut -d: -f1
-
3
Скройте сообщения об ошибках. Команда grep выводит сообщение об ошибке, если пытается получить доступ к папкам без надлежащих разрешений или попадает в пустые папки. Такие сообщения можно отправить в /dev/null, чтобы они не отображались на экране.[5]
grep -r -i "поисковый запрос" /путь/к/каталогу/ 2>/dev/null
Реклама
Об этой статье
Эту страницу просматривали 43 755 раз.