ファイルの存在を検索

ファイルの存在を検索

ファイル名のセットを含む .txt ファイルがあり、ディレクトリ内にそれらのファイルが存在するかどうかを確認したいと考えました。

cat file list.txt
File1
File2
File3

私のスクリプトは、これらのファイルがディレクトリ内に存在するかどうかを確認する必要があります。

答え1

zsh

dir=/some/dir
list_file=/path/to/file.list

list=( ${(f)"$(<$list_file)"} )
existing=( $dir/*(ND:t) )
files_in_list_that_exist=( ${list:*existing} )
files_in_list_that_dont_exist=( ${list:|existing} )

$dirその場合の存在は、あなたが必要とするエクトリーの内容を読むことによって決定されます読む許可(必ずしも検索許可)。

POSIX のようなシェルでは、次のようにも実行できます。

while IFS= read -r file; do
  if [ -e "$dir/$file" ] || [ -L "$dir/$file" ]; then
    found=yes
  else
    found=no
  fi
  printf '%s\n' "$file: $found"
done < "$list_file"

lstat()ここで、ファイルの存在は、ファイル自体に対するシステムコール(またはそのバリエーション)を使用して決定されます。検索礼拝堂への入場許可$dir(必ずしも読む許可)。

関連情報