LINUX.ORG.RU

GREP из списка по всем директориям в определенных файлах

 , , , ,


0

1

Добрый день.

Есть список сайтов, которые нужно найти во всех .txt файлах во входящих директориях.

Ищет, но во всех вложенных директориях во всех файлах:

grep -r -f 250.txt ./

Питаюсь добавить исключения, не работает:

grep -r -f 250.txt «*.txt»

  • grep: *.txt: No such file or directory

По одному патерну ищет без проблем:

find ./ -name «*.txt» -exec grep -H «mysite.com» {} +

Подскажите, пожалуйста, как решить задачу?

Оборачивать глобы в кавычки не нужно — это раз.

Если нужно задать паттерны на файлы:

find ./ \( -iname "*.txt" -o -iname "*.eml" \) -exec ...

Если нужно задать вхождения:

grep -E '^one|two$|three|what.*ever'

В чём проблема?

mord0d ★★★ ()
Ответ на: комментарий от mord0d

спасибо

не получается, по сути вот так пытаюсь:

find ./ -name *.txt -exec grep -r -f 250.txt -A2 -B2 -H {} +

в файле 250.txt находится список сайтов который нужно найти во всех файлах что в директориях внутри

edwlad ()
Ответ на: спасибо от edwlad

Для find глоб нужно экранировать (иначе его развернёт шелл, а не сам find).

Ключ -r для grep в твоём случае не нужен, так как перебором файлов занимается find, и дёргает grep на каждый отдельный файл отдельно.

не получается

Вообще нет вывода?

mord0d ★★★ ()