如何列出包含指定文件的目录,其中包含指定内容?

如何列出包含指定文件的目录,其中包含指定内容?

我有数百个目录,每个目录中都有一个带有名称的文件report.ext,该文件可以包含一行,例如

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,则会打印文件中每次出现这些行的目录名称。

相关内容