ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
特定の日付に変更されたすべてのファイルを見つけて、それらをzcatしてfielsで数値ストリングを検索したいとします。zcatパイプto grep
ファイル自体ではなく文字列のファイル名を検索するため、上記は機能しません。
助けが必要ですか?
M
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
特定の日付に変更されたすべてのファイルを見つけて、それらをzcatしてfielsで数値ストリングを検索したいとします。zcatパイプto grep
ファイル自体ではなく文字列のファイル名を検索するため、上記は機能しません。
助けが必要ですか?
M
代わりにfind
を試してみてください。そして/またはxargs
。
使用xargs
のawkでファイル名の出力に対してgrepを実行するには:
ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345
それとも、私が推測する、自身のawkからパイプの残りの部分を実行します。
コマンドラインを正しく読んだ場合、その内容ではなくファイル名を解凍しようとしているzcatが表示されます。これを解決するためにxargsのを使用します。
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|xargs zcat -fq |grep 12345
をxargs
かfind
の使用に関する罰金の回答に加えて、あなたはまた、代わりにzgrep
またはgrep -Z
にzcat
や配管を排除することで、余分なプロセスを取り除くことができます。
私のシステム(OS X)では、grep -Zはあなたが思うように見えません。 –
明らかにLinux上ではありません。おっとっと。 zgrepはより良い選択です。 – dwc