指定されたコンテンツを含む指定されたファイルを含むディレクトリを一覧表示するには?

指定されたコンテンツを含む指定されたファイルを含むディレクトリを一覧表示するには?

何百ものディレクトリがあり、各ディレクトリにはreport.ext次の1行を含むことができる名前のファイルがあります。

Beta score for best model 95.35

ファイルが存在し、その行が含まれていて、その行に95を超える値を含むディレクトリのリストを取得したいと思います。

コマンドラインツールでこれを達成できますか?

答え1

最も簡単な方法は、これらのファイルを見つけて内容が一致した場合に親ディレクトリを印刷することです。たとえば、

find . -name report.ext -type f -exec awk '
   /^Beta score for best model [0-9.]+$/ && $NF > 95 {
     dir = FILENAME
     sub("/[^/]*$", "", dir)
     print dir
     nextfile
   }' {} +

awk実装がこれをサポートしていない場合、これらの行がファイルにnextfile現れるたびにディレクトリ名が印刷されます。

関連情報