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

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

我有数百个目录,每个目录中都有文件名中带有日期的文件,如下所示:

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

有时会出现某个文件夹中没有生成某个文件的情况。继续前面的示例,文件20190916.file.gzdir2 中可能缺少:

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

我怎样才能只列出不包含的目录名称20190916.file.gz

$find . | grep 20190916将列出包含此文件的所有文件夹,所以基本上我只需要以某种方式反转此命令的输出

答案1

假设目录不是嵌套的,循环遍历目录并检查每个目录中是否存在该文件。

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

相关内容