Ich habe eine Datei mit dem Namen:f{number}.ext
In einem anderen Verzeichnis gibt es eine Liste von Verzeichnissen:
- 001
- 002
- 003
- ....
Jedes dieser Verzeichnisse enthält eine Liste von Dateien:
- f001.ext
- f002.ext
- ...
Die Dateinamen wiederholen sich in jedem Verzeichnis, aber es handelt sich um unterschiedliche Dateien. Ich muss diese Datei ( f{number}.ext
) in der referenzierten Verzeichnisliste finden und den Namen des Stammverzeichnisses abrufen – z. B. 003
– oder eine Meldung ausgeben, wenn die Datei nicht gefunden wird.
fdupes
Kann ich es für diesen Vorgang verwenden ?
Antwort1
Sie könnten dieses Bash-Skript verwenden:
#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
myFile=`ls */f${iNumb}.ext 2>&1`
if [ "${myFile:0:2}" == "ls" ]
then
echo "File f${iNumb}.ext: File not found"
else
echo "File f${iNumb}.ext:" `dirname ${myFile}`
fi
done
- Das
2>&1
befasst sich mit der Fehlermeldung von ls, wenn die Datei nicht gefunden wird (zBls: cannot access */f005.ext: No such file or directory
). - Der
if
Test zeigt, ob der StringmyFile
mit einem beginntls
(dann liegt ein Fehler vor) oder nicht (dann haben wir eine Datei gefunden). dirname
gibt das Verzeichnis zurück.basename
würde den Dateinamen zurückgeben.