2

Хотите знать, если кто-нибудь может мне помочь, я очень ржав с Bash и, похоже, попал в какой-то тупик.

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

Начальная попытка:

cat filename | grep -lr *

Однако это не возвращает никакого вывода.

Кто-нибудь может дать мне несколько советов о наилучшем подходе?

2 ответа2

3

Избегайте бесполезного использования cat. Конечно, это можно решить с помощью xargs и тому подобного. Но это слишком сложным по сравнению с простым в while цикл.

while read i 
do
    grep -r -- "$i" directory/
done < filename
2

Я бы попробовал это.

cat filename | while read line ; do grep -lr "$line" * ; done

Вы также можете передать его в «sort -u», чтобы не получить дубликат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .