我有数百个目录,每个目录中都有一个带有名称的文件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
,则会打印文件中每次出现这些行的目录名称。