Buscar existencia de archivo

Buscar existencia de archivo

Tengo un archivo .txt con un conjunto de nombres de archivos y quería verificar la existencia de esos archivos en un directorio.

cat file list.txt
File1
File2
File3

Mi secuencia de comandos debería verificar si estos archivos existen en el directorio o no.

Respuesta1

En 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} )

La existencia en ese caso se determina leyendo el contenido de la $directoría, a la que es necesarioleerpermiso (no necesariamentebuscarpermiso).

Con cualquier shell tipo POSIX, también puedes hacer:

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"

Aquí, la existencia de búsqueda se determina utilizando la lstat()llamada al sistema (o una variación de la misma) en los archivos mismos, para lo cual necesitabuscarpermiso a la $directoría, (no necesariamenteleerpermiso).

información relacionada