リストのgrepファイル

リストのgrepファイル

何百ものファイルのリストに対してgrepを実行しようとしています。

$ head -n 3 <(cat files.txt)
admin.php
ajax/accept.php
ajax/add_note.php

ただし、ファイル内で見つかったことがわかっている文字列を探していても、以下はファイルを検索しません。

$ grep -i 'foo' <(cat files.txt)

$ grep -i 'foo' admin.php
The foo was found

私は旗についてよく知っており、-f次のように読みます。模様ファイルから。しかし、どうやって読むべきですか?入力ファイル

cp私はその形式をサポートしているように見える一時ディレクトリに<(cat files.txt)ファイルをコピーし、そこからファイルをインポートする恐ろしい解決策を検討しました。Shirleyにはより良い方法があります。

ベストアンサー1

ファイル自体ではなくファイル名のリストを探しているようです。<(cat files.txt)ファイルをリストするだけです。<(cat $(cat files.txt))実際に接続して単一のストリームで検索してみてください。または

grep -i 'foo' $(cat files.txt)

すべてのファイルにgrepを提供します。

ただし、リストにファイルが多すぎると、パラメータ数に問題が発生する可能性があります。それを書くだけ

while read filename; do grep -Hi 'foo' "$filename"; done < files.txt

おすすめ記事