Pesquisar existência de arquivo

Pesquisar existência de arquivo

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 $director, 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 $director, (não necessariamentelerpermissão).

informação relacionada