搜索文件存在

搜索文件存在

我有一个带有一组文件名的 .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 的 shell,您还可以执行以下操作:

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,(不一定允许)。

相关内容