zcat to grep с именем файла

ls -ltr|grep 'Mar  4'| awk '{print $9 }'|xargs zcat -fq |grep  12345

Сейчас я использую эту команду, чтобы перечислить записи, которые содержат мою числовую строку. Как я могу получить эту команду, чтобы напечатать имя файла, в котором были найдены строки?

Спасибо

3 ответа

Используйте zgrep

КСТАТИ. то, что вы пытаетесь сделать, может быть сделано с помощью find

find  -newermt 'Mar 4' -and ! -newermt 'Mar 5' -exec zgrep -l '12345' {} \;

Если вы используете zgrep вместо zcat+grep (что делает то же самое), вы делаете это следующим образом:

ls -ltr | grep 'Mar 4' | awk '{print $9}' | xargs zgrep 12345

Пройти -t возможность xargs, заставляя его напечатать команду, которую он выполняет (zcat команда, включая имя файла) перед запуском. Команда выводится в stderr, поэтому она не будет мешать вашей трубе.

Другие вопросы по тегам