Ich habe eine eingeschränkte Bash-Shell auf meinem NAS und viele Dateien, die das Zeichen ~
im Dateinamen enthalten. Ich habe beispielsweise eine Datei in 2018/10/example~1.jpg
und muss sie verschieben und in umbenennen allFiles/2018-10-example_1.jpg
.
Ich muss das ~
durch ersetzen _
und den Pfad mit -
statt /
im Dateinamen hinzufügen.
Könnten Sie mir bitte helfen?
PS Nur Dateien mit der Erweiterung .jpg
/ .png
/.mov
Antwort1
Ich habe kein QNAP, aber ich glaube, seine Shell ist eigentlich BusyBox. Dies sollte sowohl mit BusyBox als auch mit Bash funktionieren (bei Bash müssen allerdings auch find+cut+awk installiert sein):
Angenommen, die Jahresverzeichnisse (also „2018“) und die Verzeichnisse „allFiles“ liegen auf derselben Ebene und diese Ebene ist Ihr aktuelles Arbeitsverzeichnis in Ihrer Shell:
find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'
Dadurch wird eine Reihe von Befehlen zum Verschieben aller Ihrer JPG-Dateien erstellt. Überprüfen Sie zunächst die Befehle, um sicherzustellen, dass sie sinnvoll sind. Führen Sie sie dann aus, indem Sie am Ende des obigen Befehls „| sh“ anhängen.
Ersetzen Sie dann „*.jpg“ oben durch eine andere Dateierweiterung, die Sie verarbeiten möchten, und wiederholen Sie den Vorgang.