Archiv verlassen und diese Seite im Standarddesign anzeigen : JHead
Hallo,
ich benutze JHead zur Umbenennung meiner Bilddateien nach den Exif-Daten.
Vorher: DSC03781.JPG Hinterher: 2009-04-03_13-25-37.JPG
so sieht der Befehl dafür aus:
jhead -n%Y-%m-%d_%H-%M-%S *.JPG
Das klappt mit JHead halt nur für den aktuellen Ordner. Die Funktion das es rekursiv geht, gibt es für jhead nur für Windows :(
Wie kann ich unter Linux in Unterverzeichnissen meine JPG Bilddateien alle samt mit einmal ändern?
Momentan bin ich gezwungen in jedes einzelne Verzeichnis zu wechseln und dann jhead -n%Y-%m-%d_%H-%M-%S *.JPG auszuführen.
Danke für die Hilfe!
Siehe "man find" bei den Optionen "-type", "-iname" und "-exec".
Falls es Probleme mit find gibt, werden Dir hier viele Leute helfen können, da es eine sehr beliebte Software ist.
#!/bin/bash
# JPG umbennen
find ~/Pfadzu/Pictures -iname \*.JPG -exec jhead -n%Y-%m-%d_%H-%M-%S *.JPG;
Ich hab mal ein wenig googled - würde das Script da oben so funktionieren wie es sollte?
Erstens: Nein, weil Du den Platzhalter für die gefundene Datei "{}" statt dem letzten "*.JPG" benutzen und das Semikolon am Ende mit einem Leerzeichen trennen und einem Backslash escapen musst ("\;", alternativ kann man aber auch ein "+" nehmen, was in diesem Fall vermutlich sogar besser wäre).
Zweitens: Kannst Du es ja in einem kleinen Testverzeichnis mit ein Paar Beispielbildern in Unterverzeichnissen testen und solltest sowieso ein Backup haben, damit ein Scheitern nicht so schlimm wäre.
PS: Wozu googeln? Steht doch alles in "man find" ... sogar mit Beispielen ... :rolleyes:
Erstens: Nein, weil Du den Platzhalter für die gefundene Datei "{}" statt dem letzten "*.JPG" benutzen und das Semikolon am Ende mit einem Leerzeichen trennen und einem Backslash escapen musst ("\;", alternativ kann man aber auch ein "+" nehmen, was in diesem Fall vermutlich sogar besser wäre).
Zweitens: Kannst Du es ja in einem kleinen Testverzeichnis mit ein Paar Beispielbildern in Unterverzeichnissen testen und solltest sowieso ein Backup haben, damit ein Scheitern nicht so schlimm wäre.
PS: Wozu googeln? Steht doch alles in "man find" ... sogar mit Beispielen ... :rolleyes:
ich mußte googlen, da ich in Sachen BashScripting in dem Sinne ein Newbie bin. Learning by Doing ist immer noch die effektivste Methode klar, aber hier bin ich an meine Grenzen gestoßen.
Ich teste das mal bei Gelegenheit in einem Testverzeichnis - mal sehen, ob ich die Scriptidee soweit richtig abändern kann.
Danke jedenfalls für die Hilfe!
#!/bin/bash
# JPG umbennen
find ~/Pfadzu/Pictures -iname \*.JPG -exec jhead -n%Y-%m-%d_%H-%M-%S {} \;
so funktioniert das - okay!
im nächsten Schritt will ich die Pfadangabe noch ändern, d.h. es soll der aktuelle Pfad als Ausgangspunkt genommen werden, in dem man sich auf der Konsole befindet bzw. denn man dem Skript manuell übergeben kann?
so ich bin wieder ein Schritt weiter
mit $PWD bekomme ich den aktuellen Pfad übergeben
find $PWD -iname \*.JPG -exec jhead -n%Y-%m-%d_%H-%M-%S {} \;
ist nur die Frage wie ich das hin bekomme mit der Abfrage $1, wenn ein Wert übergeben wird (der Pfad wo was gemacht werden soll) bzw. wenn nix angegeben ist $PWD benutzt
PWD kannste weglassen, find nutzt per default das aktuelle Verzeichnis.
find -iname \*.JPG -exec jhead -n%Y-%m-%d_%H-%M-%S {} \;
find $1 -iname \*.JPG -exec jhead -n%Y-%m-%d_%H-%M-%S {} \;
ah okay da sollte das mit $1 so klappen
wenn da keine Angabe nach dem Skript gemacht wird, dann führt es im aktuellen Verzeichnis das aus, sonst in dem angegebenen Pfad
teste ich mal in meiner virtuellen Umgebung, nicht das von / an alle jpg so durchforstet werden - das will ich nun nicht haben
Es klappt so wie ich mir es vorgestellt hab!
Danke für die Hilfe
@oziris für
"Siehe "man find" bei den Optionen "-type", "-iname" und "-exec"."
und
@John W für
"weglassen von $PWD"
:)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.