Bash - 配列にないすべてのファイルを見つける方法

Bash - 配列にないすべてのファイルを見つける方法

ディレクトリに多くのファイルがあり、その中に予想されるファイルのリストがあります。

例: 私が持っているファイルは次のとおりです。

  • ファイル1
  • ファイル2
  • ファイル3

予想されるファイルは

  • ファイル1
  • ファイル2
  • ファイル4

私はディレクトリをテストしたいと思い、file4がディレクトリにないことがわかりました。

ベストアンサー1

ファイル名を含む配列があり、ディレクトリに存在しないファイルを見つけるには、配列を繰り返してファイルが存在することを確認します。 (すべての種類の一般的なファイル-fテスト)-e

files=(file1 file2 file4)
for f in "${files[@]}" ; do 
    [ -f "$f" ] || echo "$f: not found"
done 

その逆も似ていますが、二重ループが必要な場合、または配列を連想配列に切り替える必要があります。ダブルループを使用してください。

files=(file1 file2 file4)
for f in * ; do
        found=0
        for g in "${files[@]}" ; do
                [ "$f" = "$g" ] && found=1
        done
        [ "$found" = 0 ] && echo "$f: in directory but not listed"
done 

おすすめ記事