検索ファイルが存在します

検索ファイルが存在します

ファイル名のセットを含む.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。 (必ずしもそうではありません。読む許可する)。

関連情報