搜尋文件存在

搜尋文件存在

我有一個帶有一組文件名的 .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在這種情況下,存在是透過讀取您需要的 ectory許可(不一定搜尋允許)。

使用任何類似 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"

在這裡,find 的存在是透過使用lstat()檔案本身的系統呼叫(或其變體)來確定的,為此您需要搜尋的許可$dir,(不一定允許)。

相關內容