Ich habe eine TXT-Datei mit einer Reihe von Dateinamen und wollte die Existenz dieser Dateien in einem Verzeichnis überprüfen.
cat file list.txt
File1
File2
File3
Mein Skript soll prüfen, ob diese Dateien im Verzeichnis vorhanden sind oder nicht.
Antwort1
In 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} )
Die Existenz wird in diesem Fall durch das Lesen des Inhalts des $dir
Sektors bestimmt, zu dem SielesenErlaubnis (nicht unbedingtsuchenErlaubnis).
Mit jeder POSIX-ähnlichen Shell können Sie auch Folgendes tun:
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()
Hier wird die Existenz der Dateien über den Systemaufruf (oder eine Variante davon) bestimmt , für den SiesuchenErlaubnis zur Erteilung der Genehmigung für die $dir
Branche (nicht unbedingtlesenErlaubnis).