Command-Line

如何列出其中指定文件的目錄具有指定內容?

  • August 3, 2017

我有數百個目錄,每個目錄裡面都有一個文件名report.ext,這個文件可以包含一行

Beta score for best model 95.35

我想獲取一個目錄列表,其中該文件確實存在,它包含這樣的行以及該行包含大於 95 的值。

這可以通過命令行工具實現嗎?

最簡單的方法是查找這些文件並在它們的內容匹配時列印它們的父目錄。例如:

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,則將為文件中這些行的每次出現列印目錄名稱。

引用自:https://unix.stackexchange.com/questions/383688