Angenommen, ich habe eine Reihe von Fotos, alle mit korrekten EXIF-Informationen, und die Fotos werden nach dem Zufallsprinzip benannt (aufgrund eines Problems, das ich hatte). Ich habe ein kleines Programm aufgerufen, jhead
das mir die folgende Ausgabe gibt:
$ jhead IMG_9563.JPG
File name : IMG_9563.JPG
File size : 638908 bytes
File date : 2011:02:03 20:25:09
Camera make : Canon
Camera model : Canon PowerShot SX210 IS
Date/Time : 2011:02:03 20:20:24
Resolution : 1500 x 2000
Flash used : Yes (manual)
Focal length : 5.0mm (35mm equivalent: 29mm)
CCD width : 6.17mm
Exposure time: 0.0080 s (1/125)
Aperture : f/3.1
Focus dist. : 0.29m
ISO equiv. : 125
Exposure bias: -1.67
Whitebalance : Manual
Light Source : Daylight
Metering Mode: pattern
Exposure Mode: Manual
Jetzt muss ich alle Fotos im Ordner im nächsten Format umbenennen:
001.JPG
002.JPG
003.JPG
...
Wobei die kleinere Zahl das ältere Bild und das Maximum das neuere ist.
Ich schreibe nicht so gut, deshalb bitte ich um Hilfe.
Ich denke, ein Bash-Skript reicht aus, aber wenn Sie sich wohler fühlen, können Sie ein Python-Skript schreiben.
Ich dachte in etwas wie:
$ mv IMG_9563.JPG `jhead IMG_9563.JPG | grep date`
aber ich weiß nicht, wie ich das für alle Dateien auf einmal machen soll.
ls *.JPG | wc > rename
Und dann müsste ich ein Skript verwenden, das in XXX.JPG umbenannt wirdwc
mir leid, ich habe vergessen, den mit Namen zu bestellen.Antworten:
Sie können für alle Dateien eine for-Schleife verwenden (in der Shell / in einem Shell-Skript):
Dies ist nur eine sehr grundlegende Übersicht. Löschen
echo
Sie, wenn Sie überprüft haben, dass alles wie erwartet funktioniert.quelle
File date : 2011:02:03 20:25:09
. Wie kann ich nur die zweite Spalte filtern?j=`jhead "$i" | grep date | sed 's/.* //'`.jpg
stattdessen?'
vorheriges `` .jpg`` verpasstGerade herausgefunden, hier , dass jhead alles für Sie tun kann! :)
quelle
%i
(oder%03i
speziell) wird eine Sequenznummer geben, wie in der ursprünglichen Frage angefordert. Beides zu kombinieren könnte keine schlechte Idee sein.Wenn jemand eine komplexere Umbenennung benötigt, um beispielsweise wichtige Belichtungswerte in den Dateinamen aufzunehmen, ist hier mein kleines Skript. Es benennt JPEG - Dateien zu etwas wie folgt aus :
NightSky_2014.08.27_22.30.05_NX20_F2.8_f20.0mm_20s_ISO800.jpg
.quelle
Ich mochte den Code von maxschlepzig, hatte aber trotzdem Probleme mit der Ausgabe.
Das Problem war das Leerzeichen im resultierenden Dateinamen (zwischen der Datums- und Zeitzeichenfolge). Dies ist für Benutzer einer grafischen Benutzeroberfläche zwar trivial, erschwert jedoch die Dateiverwaltung über die Befehlszeile.
Hier wurde der Befehl 'sed' zu Gunsten des vorherigen monolithischen Arguments in vier separate 'sed'-Operationen geändert. Das Folgende ändert auch die Datei auf normale 644-Berechtigungen.
quelle
sed
ziemlich gut, also verstehe ich im Grunde, was Sie versuchen zu tun. Unser Ziel bei Stack Exchange ist es jedoch nicht, Fischbrötchen zu verteilen oder Tausende von einmaligen Lösungen für trivial unterschiedliche Fragen zu schreiben. Unser Ziel ist es, den Menschen das Fischen beizubringen (dh den Menschen, einschließlich des aktuellen Fragestellers und zukünftiger Leser, beizubringen, wie sie ihre eigenen Probleme lösen können). Zu diesem Zweck wäre Ihre Antwort besser, wenn Sie erklären würden, was Sie anstreben. (Bitte nicht reagieren in den Kommentaren, bearbeiten Sie Ihre Antwort es klarer zu machen.) ... (Fortsetzung)Da es einfacher ist, mit (imho) umzugehen, habe ich mir ein Ruby-Skript geschrieben:
Was macht das?
Durchläuft alle Dateien, die als Parameter übergeben wurden (z
*.JPG
. B. ).Ich habe überprüft, ob RAW-Dateien und -Videos korrekt verarbeitet werden. Es sollte funktionieren, mit allem, was
exiftool
man anfangen kann.Tut nichts wenn eine Datei
exiftool
meldet einen Fehler oderDas macht es ziemlich robust. Insbesondere können keine Dateien (still) verschwinden, wie dies bei einigen anderen Antworten der Fall ist.
quelle
exiv2
wäre eine alternative zum manipulieren, die eine sehr einfache syntax erlaubt:Das würde also alle JPEGs im aktuellen Ordner umbenennen:
Wenn Sie auch Geoinformationen hinzufügen möchten, können Sie Folgendes verwenden
exivtool
:quelle
Ich mag die Lösung von @ Kevin, da ich auch den ursprünglichen Namen beibehalten wollte (um Probleme mit Bildern zu vermeiden, die in derselben Sekunde aufgenommen wurden). Hier ist meine Lösung:
quelle
Erstes Posting von Neuling ... Erstes Bash-Skript ... Ich mochte die Libor / HalosGhost-Lösung oben, da sie beim Umbenennen weitere Details enthielt. Nach dem Testen würden doppelte Dateinamen jedoch Dateien verlieren. Daher habe ich ein Counter-Tag am Ende des Dateinamens hinzugefügt, um eine einfache Referenz und Kollisionsverhütung zu gewährleisten. Ich bin mir sicher, dass jemand hier dies verbessern kann, aber ich dachte, es könnte helfen.
Ich entschuldige mich für den Code. Ich habe Probleme mit der Benutzeroberfläche, aber wenn mich jemand auf die richtige Vorgehensweise hinweisen könnte, wäre das großartig.
quelle