Правила использования операторов grep и find в linux

Содержание:

Найти и удалить файлы

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

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

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

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

Когда дело доходит до каталогов, может удалять только пустые каталоги, как и .

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

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

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

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

Давайте посмотрим на следующий пример:

  • Параметр (параметры) указывает команде переходить по символическим ссылкам.
  • (путь…) указывает каталог, в котором будет производиться поиск.
  • (Выражение) указывает искать файлы, заканчивающиеся на (файлы JavaScript).

Опции

Давайте рассмотрим самые основные опции утилиты, которые помогут более эффективно выполнять поиск текста в файлах grep:

  • -b — показывать номер блока перед строкой;
  • -c — подсчитать количество вхождений шаблона;
  • -h — не выводить имя файла в результатах поиска внутри файлов Linux;
  • -i — не учитывать регистр;
  • — l — отобразить только имена файлов, в которых найден шаблон;
  • -n — показывать номер строки в файле;
  • -s — не показывать сообщения об ошибках;
  • -v — инвертировать поиск, выдавать все строки кроме тех что содержат шаблон;
  • -w — искать шаблон, как слово, окруженное пробелами;
  • -e — использовать регулярные выражения при поиске;
  • -An — показать вхождение и n строк до него;
  • -Bn — показать вхождение и n строк после него;
  • -Cn — показать n строк до и после вхождения;

Все самые основные опции рассмотрели, и даже больше, теперь перейдем к примерам работы команды grep linux.

Поиск файла в Linux по имени командой locate

Команда (Команда — группа лиц, объединённая общими мотивами, интересами) “locate” это альтернатива команде “find -name”. Команда find выискивает файлы в выбранной части файловой системы и процесс может быть не очень скорым. С другой стороны, команда locate ищет файлы в базе данный, созданной умышленно для этих целей /var/lib/locatedb, что происходит намного быстрее. Для обновления базы используется бригада updatedb. С помощью этой команды вы можете увидеть все файлы или каталоги, названия каких содержат искомый образец. Например, для поиска файла, содержащего в названии слово dog, заведите в командной строке:

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

Найти по названию

Давайте разберем эту базовую команду, чтобы сделать ее максимально понятной для каждого. Наиболее упрощенная структура команды find должна включать путь к файлу, параметр и имя самого файла. Возможно, вы подумаете: «Если я знаю путь к файлу, я уже знаю, где его найти!». Ну, путь к файлу может быть корнем вашего диска; Поэтому / будет законным путем. Но все намного проще, поскольку ваш путь займет больше времени, для обработки — потому что он должен начинаться с нуля — но, если вы не знаете, где находится файл, вы можете начать с него. Во имя эффективности всегда лучше иметь хотя бы идею, с которой начать поиск.

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

Name — с учетом регистра

Iname – без учета регистра

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

Если, однако, вы должны были изменить команду, используя опцию -iname, команда find найдет ваш файл, независимо от случая. Итак, новая команда выглядит так:

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

По глубине ищут в тех случаях, когда документы точно находятся в каталогах, которые «лежат» в других папках. К примеру, каждый каталог (а всего их путь будет три уровня) содержит 10 файлов и 10 других подпапок Для создания подобной структуры необходимо выполнить команды:

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

Далее можно искать по имени (find -name file1) или выполнить фильтрацию по глубине (find -maxdepth 2 -name file1).

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

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

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

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

Рассмотрим наиболее употребительные параметры grep:

  • -b : выводить номер блока перед выдачей результирующей строки;
  • -c : необходимо подсчитать число вхождений искомого фрагмента;
  • -i : поиск без учёта регистра;
  • -n : выдавать на стандартное устройство вывода номер строки, в которой найден искомый фрагмент или шаблон;
  • – l : в результате выдачи должны присутствовать только имена файлов с найденным поисковым фрагментом;
  • -s : игнорировать вывод ошибок;
  • -w : поиск фрагмента, опоясанного с двух сторон пробелами;
  • -v : инвертированный поиск, то есть отображение всех строк, не содержащих заданный фрагмент;
  • -e : параметр указывает, что далее следует регулярное выражение, имеющее собственный синтаксис;
  • -An : вывод искомого фрагмента и предыдущих n строк;
  • -Bn : то же, но со строками, идущими после шаблона.

Теперь имеет смысл перейти от теоретической части к практической.3

Регулярные выражения в grep

Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах grep.

Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:

  • Nov 10 01:12:55 gs123 ntpd: time reset +0.177479 s
  • Nov 10 01:17:17 gs123 ntpd: synchronized to LOCAL(0), stratum 10

Поиск в конце строки, спецсимвол

  • «$»: Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
  • Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Найдем все строки которые содержат цифры:

$ grep -r «mydomain.com» /etc/apache2/

В выводе вы получите:

/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost

/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite

/etc/apache2/vhosts.d/zendsite_vhost.conf:

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

$ grep -h -r «zendsite» /etc/apache2/

DocumentRoot /var/www/localhost/htdocs/zendsite

Поиск через графический интерфейс

Главное меню

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

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

Файловые менеджеры

Многие файловые менеджеры также предоставляют возможности поиска файлов. Например, в Dolphin для запуска поиска достаточно просто нажать кнопку со значком лупы, а затем ввести имя файла (или папки) в строку поиска. При этом вы можете выбрать папку, в которой будет выполняться поиск, а также указать дополнительные параметры (поиск по содержимому и пр.). Помимо этого в качестве поискового запроса допускается применять символы и :

Поиск по содержимому в Dolphin:

KFind

В KDE, помимо вышеупомянутых инструментов поиска, также есть замечательная утилита под названием KFind. С её помощью вы можете точно настроить параметры поиска (указать имя файла, его тип и путь поиска, обычный текстовый поиск или мета-поиск, дату изменения, размер, пользователя, группу и пр.). Она также позволяет сохранять результаты поиска в виде простого текстового списка URL-адресов найденных файлов:

SearchMonkey

SearchMonkey позволяет выполнять поиск файла, как по имени, так и по его содержимому, по диапазону дат и пр. Но главное преимущество SearchMonkey — это возможность везде применять регулярные выражения.

Поиск с применением регулярного выражения в SearchMonkey:

Recoll

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

Установить программу можно из официальных репозиториев через командную строку:

Или через графический интерфейс:

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

Это может быть очень удобно при работе с большим объемом текстовых данных. Программа поддерживает такие форматы файлов, как: .pdf, .djvu, .doc, .docx, .odf. А также умеет находить перечисленные файлы в архивах.

How to Find and Process a File in Linux

The option runs commands against every object that matches the find expression. Consider the following example:

This filters every object in the current hierarchy () for files named and runs the command to modify the results’ file permissions.

The commands run with the are executed in the process’s root directory. Use to perform the specified command in the directory where the match resides. This may alleviate security concerns and produce a more desirable performance for some operations.

The or options run without further prompts. If you prefer to be prompted before action is taken, replace with or with .

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

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 или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <команда> {} \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

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

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

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

Метод 3: Использование команды Grep

Хотя Grep не предназначен для прямого поиска файлов в вашей системе, он используется для поиска текста. Однако вы можете использовать его для отображения имен файлов, которые содержат определенную строку символов, соответствующую вашему поисковому запросу. Чтобы найти строку, вы должны заключить ее в двойные кавычки.

Общий синтаксис команды:

$ grep [/ path / to / file] где содержит общие параметры для управления поиском, а содержит строку, которую мы хотим искать.

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

Например, чтобы найти файл, содержащий слово «tintin», и мы думаем, что этот файл может быть в наших Загрузках folder, мы можем использовать следующую команду для поиска этого файла.

$ grep -r –i “tintin” /home/tin/Downloads

Где

— i используется для игнорирования различий в регистре

— r используется для поиска для указанного каталога рекурсивно

Поиск нескольких слов

Вы также можете искать несколько строк одновременно. Вы должны использовать обратную косую черту «\» и символы канала «|» среди ваших строк.

Например, для поиска двух строк «tintin» и «ping», мы можем использовать следующую команду в терминале:

$ grep –r –I “tintin\|ping” /home/tin/Downloads

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

Синтаксис команды 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 Размер файла равен 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).

Метод 1: Использование команды Find

Find — очень гибкая команда, используемая для поиска файлов на основе различных условий. Это очень полезный инструмент при поиске файла, для которого вы не помните имя файла. С помощью команды «Найти» вы можете осуществлять поиск по имени файла и папки, дате создания, дате изменения и разрешениям. Вы можете объединить эти несколько условий в одной команде поиска. Это очень мощный, но медленный инструмент поиска.

Общий синтаксис команды:

$ find /path/to/file/ -iname filename

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

$ find /path/to/file/

Например, чтобы найти все файлы в каталоге / home / tin / Downloads / , запустите Терминал, нажав Ctrl + Alt + T и затем выполните следующую команду в Терминале:

$ find /home/tin/Downloads/

Для поиска файлов в текущем каталоге используйте

$ find .

Для поиска файла с именем, например, «softwares» в текущем каталоге, используйте следующую команду в терминале:

$ find . -iname Softwares

Поиск с использованием подстановочного знака

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

$ find /path/to/file/ -iname filename*

Например, для поиска файлов, начинающихся со слова «цент», введите в Терминале следующую команду:

$ find /home/tin/ -iname cent*

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

Вы также можете искать пустые файлы с помощью команды Find. Общий синтаксис:

$ find /path/to/file/ -iname -empty

Например, чтобы найти пустые файлы в каталоге / home / tin , выполните следующую команду в Терминале:

$ find /home/tin/ -empty

Search на основе даты и времени

Используя команду «Найти», вы также можете искать файлы в зависимости от того, когда они были доступны или изменены. Типы времени, которые вы можете использовать для поиска файлов:

  • mtime (время модификации) : когда содержимое файла было изменено в последний раз.
  • atime (время доступа) : когда файл был доступен в последний раз.
  • ctime (время изменения) : когда атрибуты файла были изменены в последний раз.

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

$ find . -mtime -2

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

$ find . –atime -2

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

$ find . –ctime -2

$ find . –size +5M\

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

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

$ find /path/to/file/ -type -perm mode

Где:

Тип Параметр включает значение d или f , которые используются для указания типа файла. d для каталогов и f только для файлов. mode может быть либо с числовым разрешением (например, 777, 655 .. и т. д.), либо с символьным разрешением (например, u = x, a = r + x).

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

$ find . –type f –perm 644

Linux поиск по содержимому файлов командой locate

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

Данная команда, как правило, работает быстрее и может с легкостью производить поиск (в широком смысле — стремление добиться чего-либо, найти что-либо; действия субъекта, направленные на получение нового или утерянного (забытого): новой информации (поиск информации), данных,) по всей файловой системы. Linux имеет специальную команду grep, какая принимает шаблон для поиска и имя файла (именованная область данных на носителе информации). В случае нахождения совпадений, они будут выведены в терминал. В всеобщем виде выражение можно составить как «grep шаблон_поиска имя_файла». Чтобы отыскать файлы с помощью команды locate, просто используйте следующий синтаксис:

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

Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Любая из этих утилит имеет свои преимущества. Мы рассмотрели использование команд для поиска и фильтрации вывода бригад в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Несмотря на то, что команды find и locate сами по себе очень мощны, их действие возможно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте чистить их результаты при помощи команд wc, sort и grep.

Use Grep to Find Files Based on Content

The find command in Linux is great but it can only filter the directory tree according to filename and meta data. To search files based on what they contain you’ll need a tool like grep. Take a look:

This goes through every object in the current directory tree (.) that’s a file (-type f) and then runs grep ” forinstance ” for every file that matches, then prints them on the screen (-print). The curly braces ({}) are a placeholder for those results matched by the Linux find command. The {} go inside single quotes (‘) so that grep isn’t given a misshapen file name. The -exec command is ended with a semicolon (;), which also needs an escape (\;) so that it doesn’t end up being interpreted by the shell.

Before -exec was implemented, xargs would have been used to create the same kind of output:

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

df -h /boot

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1014M 194M 821M 20% /boot

Найти обычные файлы определённого размера

Чтобы найти обычные файлы нужно использовать
-type f

find /boot -size +20000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img

Файлы бывают следующих типов:

— : regular file

d : directory

c : character device file

b : block device file

s : local socket file

p : named pipe

l : symbolic link

Подробности в статье —

«Файлы в Linux»

find /boot -size +10000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

То же самое плюс показать размер файлов

find /boot -size +10000k -type f -exec du -h {} \;

find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
21M /boot/initramfs-3.10.0-1160.el7.x86_64.img
13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector