Linuxは、指定された名前に文字列を含むファイルを繰り返し検索します。

Linuxは、指定された名前に文字列を含むファイルを繰り返し検索します。

Linuxシェルでは、私がディレクトリにあると仮定し、すべてのサブフォルダ内の名前に文字列があり、内部に文字列を含むすべてのファイルを再帰的/dirに検索したいと思います。ファイル名の先頭、中間、または末尾にある可能性があります。どうすればいいですか?name_stringcontent_stringname_string

私はgrepを試しました:

grep -r content_string /dir/*name_string*

しかし、これまで私はそれほど幸運ではありませんでした。

ありがとうございます!

答え1

迅速な修正のために他の方法ほど効果的ではない場合でも

find /dir -type f -name '*name_string*' -print0 | xargs -0 grep -l content_string

答え2

次のOR構文が使用できると思います。

grep -nriE '.*name_string.*|content_string' /dir

または私が一般的にすることをしなさい。つまり、最初の出力をgrep別の出力にパイプすることですgrep

grep -nriE '.*name_string.*' /dir | grep -nri 'content_string'

関連情報