ファイル名のセットを含む .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
(必ずしも読む許可)。