Как использовать рекурсивную команду Grep для поиска в каталоге

«Grep» — очень полезная команда Bash для поиска содержимого в файле. Шаблон регулярного выражения можно использовать с командой «grep» для поиска любого конкретного текста в файле. Обычная команда «grep» используется для поиска содержимого в одном файле, но иногда требуется поиск содержимого в нескольких файлах, хранящихся в папке. Рекурсивная команда grep используется для поиска содержимого в каталоге с несколькими файлами. В этой статье показаны методы использования рекурсивного «grep» в Bash.

Синтаксис рекурсивного Grep:

grep -r <pattern> <directory>

Здесь параметр -r используется с командой «grep» для рекурсивного поиска. <шаблон> используется для поиска содержимого в файле определенных каталогов, включая подкаталоги. <directory> используется для определения каталога, который может содержать один или несколько файлов и каталогов. И в этих файлах и файлах подкаталогов ищется <pattern>.

 

Пример 1: Простое использование «Grep»

<pattern> команды «grep» может быть простой строкой или шаблоном регулярного выражения. Выполните следующие команды, чтобы проверить содержимое файла «sales.txt» и найти строку «Feb» в файле текущего каталога:

$ cat sales.txt



$ grep 'Feb' *

Согласно следующему выводу, строка «Feb» существует во второй строке файла «sales.txt». Вывод команды «grep» показывает, что строка поиска находится в файле «sales.txt».

srvadmin@vhost:-$ cat sales.txt

Jan: 55000

Feb: 25000

Mar: 58000

Apr: 44000

May: 23000

Jun: 98000

srvadmin@vhost: $ grep 'Feb' sales.txt: Feb: 44000

grep: temp: Is a directory

grep: tempdir: Is a directory

grep: test: Is a directory

srvadmin@vhost: -$

 

Пример 2: Использование команды «Grep» с параметром -R и флагом –Exclude-Dir

Выполните следующую команду для рекурсивного поиска строки «CSE», исключив временный каталог:

$ grep -r 'CSE*' --exclude-dir= "temp"

Согласно следующему выводу, строка «CSE» существует в трех строках файла «sales.txt» временной папки:

srvadmin@vhost: -5 grep -r 'CSE

exclude-dir= " -"temp"

tmp/courses.txt: CSE202 2.0

temp/courses.txt: CSE407

1.0

temp/courses.txt:CSE305

3.0

srvadmin@vhost: -$

 

Пример 3: Использование команды «Grep» с параметром -R

Параметр -R используется с командой «grep» для поиска содержимого в файле и символической ссылки на файл. Выполните следующую команду для поиска строки «sleep» во всех файлах и символических ссылках файлов текущих каталогов и подкаталогов:

$ grep -R 'sleep' *

Следующий вывод показывает результат поиска «спящей» строки в текущем каталоге. В выводе содержится один файл символической ссылки с именем «sleeplink.bash». Остальные три файла — «sleep1.bash», «sleep2.bash» и «sleep3.bas»:

srvadmin@vhost:-$ grep -R 'sleep'

sleep 2

sleep2.bash: #Display the line of text using 'sleep" command

sleep2.bash:echo -n 'D'; sleep 0.5s

sleep2.bash: echo -n '

sleep 0.5s

sleep2.bash:echo -n 'g'; sleep 0.5s

sleep2.bash:echo -n 'i'; sleep 0.5s leep2.bash: echo - sleep 0.5s sleep2.bash:echo -n 'a'; sleep 0.5s sleep2.bash: echo -n '1'; sleep 0.5s leep2.bash:echo -nsleep 0.5s sleep2.bash;echo -n 'C'; sleep 0.5s sleep2.bash:echo -n 'l'; sleep 0.5s leep2.bash:echo -n 'o'; sleep 0.5s

sleep2.bash: echo -n 'c'; sleep 0.5s

sleep2.bash:sleep 3s; clear

sleep2. bash: sleep 1s

sleep3.bash:sleep $alarm_time && nvlc /mnt/c/temp/alarm.mp3 sleeplink.bash: sleep $alarm_time && nvlc /mnt/c/temp/alarm.mp3 srvadmin@vhost: -$

 

Пример 4: Использование команды «Grep» с параметром -I

Команда «grep» ищет строковое значение с учетом регистра. Параметр -i используется с командой «grep» для поиска содержимого в файле без учета регистра. Выполните следующую команду для поиска строки «Credit» во всех файлах текущих каталогов и подкаталогов:

$ grep -i 'Credit' *

Согласно выходным данным, строка «credit» существует в двух местах файла «sum1.bash». Строка поиска — «Credit», и она совпадает со строкой «credit» для использования опции -i:

srvadmin@vhost: -$ grep -i 'Credit'

suml.bash:#Calculate the sum of total credit hours

sumi.bash:total="cat $filename | awk "(sum+=$2) END (print "Total course credit hours: " sum)"

grep: temp: Is a directory

grep: tempdir: Is a directory

grep: test: Is a directory

srvadmin@vhost: -S

 

Пример 5: Использование команды «Grep» с символом «^»

Символ «^» используется для поиска строки в начале строки файла. Запустите следующую команду, которая ищет строку «printf» во всех файлах Bash текущего каталога:

$ grep '^printf' *.bash

Согласно выводу, строка «printf» существует в одном месте файла «namedarg3.bash»:

srvadmin@vhost:-$ grep "*printf" ".bash 

mamedarg3.bash: printf " f "username: $User npassword: $Password nhostname: $Hostn" 

srvadmin@vhost:-$

 

Пример 6: Использование команды «Grep» с символом «$»

Символ «$» используется для поиска строки в конце строки файла. Выполните следующую команду, которая ищет во всех текстовых файлах текущего каталога строки, содержащие цифры в конце файла:

$ grep '[0-9]$' *.txt

Согласно выводу, три файла содержат числовые значения в конце строк. Это «courses.txt», «employees.txt» и «sales.txt»:

srvadmin@vhost:-$ grep "[0-9]$txt

courses.txt: CSE202

2.0

courses.txt: CSE407

1.0

courses.txt: CSE305

3.0

courses.txt: ACC101

2.0

employees.txt: 5623 amployees.txt: 1355

Andreyex Destroyer

Alex Term

90000

125003

employees.txt: 3517

Max Fax

300000

employees.txt: 7554

Anna Karenina

450000

mployees.txt: 8652 sales.txt:Jan: 60000 sales.txt: Feb: 34000 ales.txt: Mar: 120000 sales.txt: Apr: 56000 sales. txt: May: 65000 sales.txt:Jun:20000 srvadmin@vhost:-$

Ivan Dolgov

260000

 

Пример 7: Использование команды «Grep» с классом диапазона [0-9]

Диапазон [0-9] используется для определения всех чисел, содержащих любую цифру от 0 до 9. Выполните следующую команду, которая ищет строки во всех текстовых файлах текущего каталога, которые содержат строку «CSE» и любую цифру в файлы текущего каталога:

$ grep 'CSE[0-9]' *.txt

Согласно выводу, файл с именем «courses.txt» текущей директории содержит «CSE» с цифрами в три строки:

srvadmin@vhost: -$ grep 'CSE[0-9]' ".txt courses.tat: CSE202

2.0

courses.txt: CSE407

1.0

courses.txt:CSE305

3.0

srvadmin@vhost: -5

 

Заключение

Команда «grep» в основном используется для поиска в определенном файле, но рекурсивная «grep» используется для рекурсивного поиска в нескольких файлах каталога. Таким образом, рекурсивный «grep» более эффективен для глубокого поиска. В этой статье показано использование рекурсивного «grep» с использованием различных типов параметров и шаблонов.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!

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

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