파일 이름 집합이 포함된 .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"
여기서 존재 여부는 lstat()
파일 자체(또는 그 변형)의 시스템 호출을 사용하여 결정됩니다.찾다공장 허가를 얻으십시오 $dir
. (반드시 그런 것은 아닙니다.읽다허용하다).