特定のファイル名を含まないディレクトリ名を一覧表示するには? [コピー]

特定のファイル名を含まないディレクトリ名を一覧表示するには? [コピー]

私は何百ものディレクトリを持っています。各ディレクトリには、名前に日付を含むファイルがあります。

$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

おすすめ記事