Ich habe eine Datei, die eine Liste von Dateien enthält, und ich möchte wissen, ob diese Dateien existieren. Ich habe diesen Befehl ein:Bash - Datei Existenz funktioniert nicht
while read line; do
filename="$(echo $line | cut -d';' -f4)";
if [ ! -e "/some/path/$filename" ];
then echo "/some/path/$filename";
fi ;
done < "../my_list_of_file"
Dieser Befehl zurückgeben mir jede Datei aufgelistet als nicht existent, ex:
/some/path/my_listed_file.jpg
Aber wenn ich ls /some/path/my_listed_file.jpg
tun, kann ich sehen, dass die Datei vorhanden ist. Was ist falsch an meinem Befehl?
Ist dies das letzte Feld auf der Linie? Ich vermute, dass Ihre Datei CRLF-Zeilenendungen hat, weil sie unter Windows erstellt wurde. – Barmar
Wenn 'filename' das letzte Feld in jeder Zeile ist, zeigt dies auf' my_list_of_file' mit DOS-Zeilenenden. Der Dateiname endet tatsächlich mit einem Wagenrücklauf. – chepner
Wenn dies das Problem ist, verwenden Sie 'dos2unix', um die Datei zu reparieren. – Barmar