Получение строк из файлов с определенным расширением

Я пытаюсь получить пару конкретных строк из файлов с определенным расширением (.pvc). Эти файлы хранятся в разных каталогах. Затем я хочу поместить все строки в один файл txt.

например.

directory1/file_a.pvc directory2/file_b.pvc . . directory100/file_x.pvc 

Я пытаюсь использовать следующий цикл, но он не работает.

 for i in {1..5} do echo $i cd /home/directory"$i" grep -e L1 -e L2 /*.pvc > /home/all_lines.txt done 

  • Своеобразное поведение grep / heading трубопроводов
  • Тестирование регулярного выражения из stdin с помощью grep | sed | awk
  • find + grep не работает
  • Греп из файла с двойным gzip
  • Grep файл в определенном поле
  • Команда grep с ls -a работает неправильно?
  • Исключение вложенных каталогов с помощью grep
  • Как я могу остановить grep, возвращая себя
  • 2 Solutions collect form web for “Получение строк из файлов с определенным расширением”

    Проводка ответа по запросу:

     grep -h 'L1|L2' ~/directory{1..5}/*.pvc >~/all_lines.txt 

    -h сообщает grep не печатать имена файлов, L1|L2 ищет строки L1 и L2 , а directory{1..5} расширяется до directory1 , …, directory5 .

    Являются ли они все подкаталоги внутри определенного каталога (father_directory)?

    Можешь попробовать:

     find /father_directory -iname '*pvc' -exec grep -e L1 -e L2 {} \; > /home/all_lines.txt 

    или, как предложил @Philippos (спасибо):

     grep -r /father_directory -e L1 -e L2 --include "*.pvc" > /home/all_lines.txt 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.