Рекурсивный поиск файлов linux grep

Содержание
  1. Использование grep¶
  2. Вывести несколько строк¶
  3. Регулярные выражения в grep¶
  4. Рекурсивный поиск фрагмента в файлах.¶
  5. Поиск слов в grep¶
  6. Поиск двух слов¶
  7. Количество вхождений строки¶
  8. Инвертированный поиск в grep¶
  9. Вывод имени файла¶
  10. Цветной вывод в grep¶
  11. 🐧 Как выполнить поиск Grep по всем файлам и во всех каталогах
  12. Поиск Grep во всех файлах каталога
  13. Рекурсивный поиск Grep во всех подкаталогах каталога
  14. Итак, в чем разница между grep -r и grep -R?
  15. Бонусный совет: Как исключить определенный каталог из рекурсивного поиска grep
  16. Подведем итоги
  17. You may also like
  18. 📜 Чтение файла построчно на Bash
  19. 📧 В чем разница между IMAP и POP3
  20. ✔️ Как управлять контейнерами LXD от имени обычного.
  21. 📜 Руководство для начинающих по созданию первого пакета.
  22. Феноменальная популярность электроники Xiaomi: основные причины
  23. 📜 Получение вчерашней даты в Bash: Практическое руководство
  24. Использование специальных гелей при мышечных болях
  25. 📦 Как расширить/увеличить файловую систему VxFS на Linux
  26. Услуги по размещению серверного оборудования в ЦОД
  27. Для чего выполняется ИТ консалтинг на предприятиях?
  28. Leave a Comment Cancel Reply
  29. • Свежие записи
  30. • Категории
  31. • Теги
  32. • itsecforu.ru
  33. • Страны посетителей
  34. IT is good

Использование grep

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:

User:x:1000:1000:User. /home/User:/bin/bash 

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

Вывести несколько строк¶

Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:

$ grep -A4 "EE" /var/log/xorg.0.log

Выведет строку с вхождением и 4 строчки после неё:

$ grep -B4 "EE" /var/log/xorg.0.log

Выведет целевую строку и 4 строчки до неё:

$ grep -C2 "EE" /var/log/xorg.0.log

Выведет по две строки с верху и снизу от вхождения.

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

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

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

$ grep "^Nov 10" messages.1 Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10 

Поиск в конце строки — спецсимвол «$»:

$ grep "terminating.$" messages Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating. Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating. 

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

Читайте также:  How to change mode in linux

Рекурсивный поиск фрагмента в файлах.¶

$ grep -r "mydomain.com" /etc/apache2/

Кавычки позволяют искать полное соотвествие с заданным шаблоном. Пример:

$ grep -r "zendsite" /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:  

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

$ grep -h -r "zendsite" /etc/apache2/ ServerName zendsite.localhost DocumentRoot /var/www/localhost/htdocs/zendsite  

Это будет искать только те файлы, у которых есть.c или.h расширения:

$ grep --include=\*.c,h> -rnw '/path/to/somewhere/' -e "pattern" 

Это исключает поиск всех файлов, заканчивающихся расширением.o:

$ grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern" 

Для каталогов можно исключить конкретный каталог через параметр –exclude-dir. Например, это исключает dir1/, dir2/dir2 и все из них, соответствующие * .dst/:

$ grep --exclude-dir=dir1,dir2,*.dst> -rnw '/path/to/somewhere/' -e "pattern" 

Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:

Поиск двух слов¶

Можно искать по содержимому файла не одно слово, а два сразу:

$ egrep -w 'word1|word2' /path/to/file

Количество вхождений строки¶

Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):

Инвертированный поиск в grep¶

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

Вывод имени файла¶

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:

Цветной вывод в grep

Также вы можете заставить программу выделять другим цветом вхождения в выводе:

$ grep --color root /etc/passwd

© Copyright 2020 Revision 10618177 .

Versions latest Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

🐧 Как выполнить поиск Grep по всем файлам и во всех каталогах

Универсальная команда grep позволяет выполнять поиск текста во всех файлах и всех подкаталогах каталога.

Grep – это отличный инструмент, когда вам нужно выполнить поиск по содержимому файла.

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

grep search_term filename

Grep достаточно универсален.

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

Он ищет только во всех файлах в текущем каталоге.

Он не будет искать в подкаталогах.

Вы можете заставить grep искать во всех файлах и во всех подкаталогах текущего каталога, используя опцию -r рекурсивного поиска:

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

grep -r search_term directory_path

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

Поиск Grep во всех файлах каталога

Вот структура каталогов, которую я собираюсь использовать в этом примере.

За исключением файла empty.txt, все файлы содержат термин ‘simple’, по которому я буду выполнять поиск grep.

~/scripts$ tree . ├── dir1 │ └── new_script.sh ├── dir2 │ └── your_script.sh ├── dir3 │ ├── empty.txt │ └── linked.txt -> ../../sample.txt ├── my_script.sh └── your_script.sh 3 directories, 6 files

Для поиска слова ‘simple’ во всех файлах текущей директории достаточно использовать подстановочный знак (*).

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

Поскольку вы не можете напрямую искать grep в каталоге, система выдаст ошибку “XYZ is a directory” вместе с результатами поиска.

Если вы находитесь не в том же каталоге, в котором хотите выполнить, вы можете указать путь к каталогу и закончить его символом /*

grep search_term directory_path/*

По сути, вы используете * для расширения всех элементов (файлов и каталогов) данного каталога.

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

Рекурсивный поиск Grep во всех подкаталогах каталога

Grep предоставляет опцию -r для рекурсивного поиска.

С этой опцией grep будет искать все файлы в текущем (или указанном) каталоге, а также все файлы во всех подкаталогах.

Вот рекурсивный поиск, который я выполнил в предыдущем примере:

Существует также опция -R для рекурсивного поиска, и она работает почти так же, как опция -r.

Итак, в чем разница между grep -r и grep -R?

На самом деле, только одна.

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

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

grep -r search_term path_to_directory

Бонусный совет: Как исключить определенный каталог из рекурсивного поиска grep

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

Для этого тоже есть соответствующая возможность.

Я уже говорил вам, что grep – чрезвычайно универсальная команда.

grep -r --exclude-dir=dir_name serach_term directory_path

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

grep -r --exclude-dir= serach_term directory_path

Подведем итоги

Вот краткий обзор использования поиска grep для нескольких файлов и каталогов:

Команда Grep Описание
grep string * Поиск во всех файлах в текущем каталоге
grep string dir Поиск во всех файлах в каталоге dir
grep -r string . Рекурсивный поиск во всех файлах во всех подкаталогах
grep -r string dir Рекурсивный поиск во всех файлах во всех подкаталогах каталога dir
grep -R string . То же, что и r, но следует за символическими ссылками
itisgood
☁️ Как установить Rclone на Linux и Unix
ТОП-10 ЛУЧШИХ ДИСТРИБУТИВОВ LINUX ДЛЯ НОУТБУКОВ В 2022 ГОДУ

You may also like

📜 Чтение файла построчно на Bash

📧 В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

📜 Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

📜 Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

📦 Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Для чего выполняется ИТ консалтинг на предприятиях?

Leave a Comment Cancel Reply

• Свежие записи

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…

В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…

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

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

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

Источник

Оцените статью
Adblock
detector