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!

xtrimsky
quelle

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.

AFH
quelle
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
0

Normalerweise reicht es aus, um es zu ersetzen $i durch "$i".

Gerard H. Pille
quelle
Das ist eher ein Kommentar als eine Antwort.
C0deDaedalus
@ KamilMaciorowski Es ist die fünfte Definition des Adjektivs: thefreedictionary.com/normally
Gerard H. Pille
Meinetwegen. Downvote widerrufen
Kamil Maciorowski
@ KamilMaciorowski Respekt, du kannst einen Witz machen!
Gerard H. Pille