正規表現パターンを含むすべてのファイルを見つける方法はありますか?ちなみに、grepを意味するものではありません。使用正規表現とは、正規表現文字列を含むファイルを見つけることを意味します。
つまり、これはありません:
grep -E '\S+\s+\d+' $file
しかし、次のようなもの:
grep -E '<something here>' $file
ここで $file には実際にはいくつかの正規表現パターンが含まれています。
更新(明確化のため):
そのパターン()を探したくないので\S+\s+\d+
、次の内容を含むファイルを探したいと思います。どの正規表現パターンが含まれています。
答え1
grep
はい、検索するだけです。ひも代わりに正規表現を使用してください。
このオプションの目的は次のとおりです-F
。
grep -F -- '\S+\s+\d+' "$file"
この文字列を含む現在のディレクトリ内または下のすべてのファイルを検索するには(一致する行と一致するエントリを含む各ファイルのパス名を出力します):
find . -type f -exec grep -F '\S+\s+\d+' /dev/null {} +
または、常に印刷するgrep
必要-H
がある一致を含むファイルのパス名を使用してください。
find . -type f -exec grep -H -F '\S+\s+\d+' {} +
または、一致する行ではなくファイルのパス名を探します。
find . -type f -exec grep -l -F '\S+\s+\d+' {} +
到着するこのファイルを処理するには、次のようにします。
find . -type f -exec grep -q -F '\S+\s+\d+' {} \; -exec sh -c '
for pathname do
# code that uses "$pathname" here
done' sh {} +
空でないテキスト文字列はすべて正規表現なので、検索ファイルについて詳しく知らない限り、「すべての正規表現」を検索することはできません。表示しているファイルがJSONファイルであり、正規表現が特定のキーの値として表示されることがわかっている場合は、そのキーを持つ特定のファイルを簡単に検出できます。