Grep

如何列出不包含特定文件名的目錄名?

  • September 21, 2019

我有數百個目錄,在每個目錄中都有文件名中帶有日期的文件,如下所示:

$cd dir1
$ls 
20190915.file.gz
20190916.file.gz
20190917.file.gz
...

有時會發生某個文件沒有在某個文件夾中生成。繼續上一個範例,dir2 中可能缺少文件20190916.file.gz :

$cd dir2
$ls
20190915.file.gz
20190917.file.gz
...

如何僅列出不包含20190916.file.gz的目錄名稱?

$find . | grep 20190916會列出所有包含這個文件的文件夾,所以基本上我只需要以某種方式反轉這個命令的輸出

假設目錄沒有嵌套,遍歷目錄並檢查每個目錄中是否存在文件。

for d in */; do
 if ! [ -e "$d/20190916.file.gz" ]; then
   echo "Missing $d/20190916.file.gz"
 fi
done

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