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