Umbenennen von Fotos nach dem Erstellungsdatum unter Mac OS X mit Bash, ohne dass Leerzeichen verwendet werden


1

Ich habe nach einer Lösung für das Umbenennen von Fotos unter Mac OS X gesucht. Ich habe viele Lösungen gefunden, aber die meisten funktionieren nicht, wenn die Datei entweder ein Leerzeichen enthält oder wenn ich ein Leerzeichen einfügen möchte im Dateinamen

Zum Beispiel habe ich dieses Skript gefunden:

for i in *.jpg; do newname=$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- $i); mv -- $i $newname.jpg; done

Das Skript funktioniert, solange ich kein Leerzeichen in den endgültigen Dateinamen setze (ich möchte ein Leerzeichen im Dateinamen, da ich meine Dateien seit drei Jahren unter Windows umbenannt habe). Und es bricht auch, wenn die Datei selbst ein Leerzeichen enthält. Wenn ich also ein Foto mit dem Namen "Hello World.jpg" habe, wird es nicht verarbeitet.

Hätte jemand bitte eine Lösung dafür? Dies erfordert vorzugsweise keine zusätzliche Software (ich möchte das Skript bei jedem Maschinenwechsel kopieren / einfügen).

Vielen Dank!

Antworten:


3

Sie müssen in Ihren Vertretungen Anführungszeichen verwenden:

for i in *.jpg; do newname="$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- "$i")"; mv -- "$i" "$newname.jpg"; done

Es muss in doppelte Anführungszeichen gesetzt werden, um Variable und zuzulassen $() Erweiterung.


Aus irgendeinem Grund werden dadurch alle Dateien gelöscht, die ein Leerzeichen enthalten. Ich weiß nicht genau warum.
xtrimsky

Wenn Sie hinzufügen echo vor mvkönnen Sie sehen, was die Befehle sein werden.
AFH

Sie brauchen Anführungszeichen um $i im $(... $i). (Dies funktioniert trotz der äußeren Anführungszeichen.) Sie sollten in der Regel doppelte Anführungszeichen setzen irgendein Variablensubstitution, es sei denn, Sie haben einen bestimmten Grund, dies nicht zu tun.
jpaugh

Ja, Sie haben recht: Ich habe zu Unrecht angenommen, dass die äußeren Zitate beides betrafen. Ich habe meine Antwort aktualisiert. Mea Culpa.
AFH

@xtrimsky - Ich habe meine Antwort mit zusätzlichen Zitaten aktualisiert, als Antwort auf den Kommentar von @jphaugh. Entschuldigung für die Auslassung zuvor - ich testete unter Linux, aber die stat Die Optionen scheinen anders zu sein und ich habe die inneren Zitate verfehlt.
AFH

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.