Eu tenho um arquivo .txt com um conjunto de nomes de arquivos e queria verificar a existência desses arquivos em um diretório.
cat file list.txt
File1
File2
File3
Meu script deve verificar se esses arquivos existem ou não no diretório.
Responder1
Em 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} )
A existência nesse caso é determinada pela leitura do conteúdo do $dir
ector, ao qual você precisalerpermissão (não necessariamenteprocurarpermissão).
Com qualquer shell do tipo POSIX, você também pode fazer:
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"
Aqui, a existência de localização é determinada usando a lstat()
chamada do sistema (ou variação dela) nos próprios arquivos, para os quais você precisaprocurarpermissão para o $dir
ector, (não necessariamentelerpermissão).