Das stapelweise Umbenennen von Fotos nach Erstellungsdatum unter Mac OS X mit Bash funktioniert nicht mit Leerzeichen

Das stapelweise Umbenennen von Fotos nach Erstellungsdatum unter Mac OS X mit Bash funktioniert nicht mit Leerzeichen

Ich habe nach einer Lösung gesucht, wie man unter Mac OS X Fotos stapelweise umbenennen kann. Ich habe viele Lösungen gefunden, aber die meisten funktionieren nicht, wenn die Datei entweder ein Leerzeichen enthält oder wenn ich ein Leerzeichen in den Dateinamen einfügen möchte.

Ich habe beispielsweise 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 im endgültigen Dateinamen kein Leerzeichen einfüge (ich möchte ein Leerzeichen im Dateinamen, da ich meine Dateien unter Windows seit 3 ​​Jahren mit Leerzeichen umbenenne). Und es funktioniert auch nicht, 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 eine Lösung dafür? Am besten ist dafür keine zusätzliche Software erforderlich (ich möchte das Skript nur jedes Mal kopieren/einfügen können, wenn ich den Computer wechsle).

Danke schön!

Antwort1

Sie müssen in Ihren Ersetzungen 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 müssen doppelte Anführungszeichen verwendet werden, um Variablen und $()Erweiterungen zu ermöglichen.

Antwort2

Normalerweise würde es ausreichen, $idurch zu ersetzen "$i".

verwandte Informationen