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, $i
durch zu ersetzen "$i"
.