「find」と「grep」を使用して「where」句と同じ操作を実行する方法

「find」と「grep」を使用して「where」句と同じ操作を実行する方法

テキストファイルのフォルダツリーがあり、部分文字列のインスタンスとそのファイルの名前を探したいと思います。

私が次のことをするなら:

find . | xargs cat | grep 'abc'

これにより、部分文字列のインスタンスを見つけることができますが、元のファイルは見つかりません。

助けてくれてありがとう!

ベストアンサー1

このように実行すると、xargs catファイル名が失われ、データがパイプを流れる間にパイプに渡すための良い方法はありません。

ただし、grep -l一致する文字列を含むファイル名がリストされているため、次のものを使用できます。

find . -type f | xargs grep -l hello

または、ディレクトリを再帰的に検索すると、grep -rスペースや引用符を含むファイル名の問題も解決できます。xargs

grep -lre abc .

ファイル名だけでなく、一致する文字列も必要な場合は、通常の動作を-l得るgrepために削除してください。コマンドラインにパスを指定しても、一致するファイル名を印刷する必要が-rあります。

おすすめ記事