Поиск существования файла

Поиск существования файла

У меня есть файл .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"

Здесь существование find определяется с помощью lstat()системного вызова (или его вариации) самих файлов, для чего вам нужнопоискразрешение на $dirпосещение церкви (не обязательно)читатьразрешение).

Связанный контент