"~" aus dem Dateinamen entfernen

"~" aus dem Dateinamen entfernen

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.jpgund 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.

verwandte Informationen