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

Я пытаюсь получить пару конкретных строк из файлов с определенным расширением (.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 все строки в файле и запись строки в файл из точки соответствия шаблона
  • Grep: неожиданные результаты при поиске слов в заголовке с man-страницы
  • Есть ли способ сгладить папку и показать все строки, содержащие символы не-ascii?
  • Мне нужно найти все домашние каталоги пользователей, перечисленные с помощью grep из / etc / passwd
  • Почему команда grep игнорирует период в строке поиска?
  • Проблема с Grege 'OR' regex
  • Есть ли опция / команда для дифференциации файлов на основе состояния копии файла в каталоге?
  • Извлечь номер строки файла, который имеет ненулевое значение перед указанной строкой
  • 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 
    Linux и Unix - лучшая ОС в мире.