Grep архивированные файлы для переменных из файла .txt - PullRequest
0 голосов
/ 14 января 2020

У меня есть заархивированные файлы, такие как:

20191231_aaa.zip

20191231_bbb.zip

20191231_ ccc .zip

20191230_aaa. zip

20191230_bbb.zip

20191230_ ccc .zip

20191229_aaa.zip

20191229_bbb.zip

20191229_ ccc .zip

...

Я хочу выполнить grep, если файлы

* aaa.zip и * bbb.zip

содержит файлы:

  • с указанным словом в названии, например, 'house'
  • только для указанных дат, например: 20191230, 20191220, 20191210, которые находятся в файле date.txt в формате :

20191230

20191220

20191210

Я сложил с этим:

ls | xargs grep dates.txt | unzip -l | grep house

1 Ответ

0 голосов
/ 14 января 2020

Если я правильно понимаю ваш вопрос, ниже должно работать:

ls *.zip | fgrep -f dates.txt  | xargs -I{F} sh -c 'unzip -l {F} | grep -q house && echo FOUND: {F}'

Обратите внимание, что выше это упрощение, предполагая, что "чистые" *.zip имена файлов, то есть без пробелов и кавычек.

Дистилляция:

  • ls *.zip | fgrep -f dates.txt отфильтрует список файлов, используя dates.txt в качестве fgrep шаблонов
  • | xargs -I{F} sh -c '...' будет использовать каждую прочитанную строку ( имя файла .zip) для выполнения sh -c '...', где фрагмент оболочки ... будет ссылаться на каждое имя файла .zip как {F}
...