Hallo Liste, ich benutze zur Fotoverwaltung Digikam 0.9.4. unter OpenSuse 11.1. Bei der Bildübertragung von der Kamera auf den Rechner werden die Fotos in endungsabhängigen Unterordnern abgespeichert (RAW und JPG). Bei der anschließenden Sichtung lösche ich die nicht benötigte Bilder aus dem JPG-Ordner. Ich suche ein Programm was beide Ordner vergleicht und die RAW-Bilder löscht zu den kein entsprechendes JPG- Bild vorhanden ist. Hier mal ein einfaches Beispiel zum besseren Verständnis. JPG- Ordner -> IMG_0001.jpg , IMG_0003.jpg CR2-Ordner -> IMG_0001..cr2 , IMG_0002.cr2 , IMG_0003.cr2 Für die Datei IMG_0002.cr2 gibt es kein entsprechendes JPG, muß also gelöscht werden. Kennt jemand ein Programm was diese Aufgabe erledigen kann? Vielen Dank MIke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Mike, rsync kann das: rsync -avlH --delete JPG-DIR RAW-DIR die Optionen lH kannst Du Dir wahrscheinlich sparen, sie behandeln Sym- und Hardlinks!!! Grüße Mike Am Di Januar 13 2009 19:41 schrieb Mike Brumlich:
Hallo Liste,
ich benutze zur Fotoverwaltung Digikam 0.9.4. unter OpenSuse 11.1. Bei der Bildübertragung von der Kamera auf den Rechner werden die Fotos in endungsabhängigen Unterordnern abgespeichert (RAW und JPG). Bei der anschließenden Sichtung lösche ich die nicht benötigte Bilder aus dem JPG-Ordner. Ich suche ein Programm was beide Ordner vergleicht und die RAW-Bilder löscht zu den kein entsprechendes JPG- Bild vorhanden ist. Hier mal ein einfaches Beispiel zum besseren Verständnis. JPG- Ordner -> IMG_0001.jpg , IMG_0003.jpg CR2-Ordner -> IMG_0001..cr2 , IMG_0002.cr2 , IMG_0003.cr2
Für die Datei IMG_0002.cr2 gibt es kein entsprechendes JPG, muß also gelöscht werden. Kennt jemand ein Programm was diese Aufgabe erledigen kann?
Vielen Dank MIke
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 13. Januar 2009 20:04:01 schrieb Mike Philipp:
rsync kann das: rsync -avlH --delete JPG-DIR RAW-DIR die Optionen lH kannst Du Dir wahrscheinlich sparen, sie behandeln Sym- und Hardlinks!!!
Falls du eine GUI möchtest, könntest du mit Synkron spielen. http://www.qt-apps.org/content/show.php/Synkron?content=61021 Dafür gibt es im buildservice auch ein Paket. http://software.opensuse.org/search Sven -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 13. Januar 2009 20:04:01 schrieb Mike Philipp:
Hallo Mike,
rsync kann das: rsync -avlH --delete JPG-DIR RAW-DIR die Optionen lH kannst Du Dir wahrscheinlich sparen, sie behandeln Sym- und Hardlinks!!!
Irgendwie funktioniert das nicht.Ich habe folgendes versucht rsync -av --delete /home/mike/temp/jpg /home/mike/temp/cr2 Dabei wird eine Kopie vom Ordner jpg im Ordner cr2 erzeugt. Das ist aber nicht das was ich möchte. Gruß MIke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi, bevor man Dich noch mehr in die Irre schickt: Am Dienstag, 13. Januar 2009 20:55:04 schrieb Mike Brumlich:
Am Dienstag, 13. Januar 2009 20:04:01 schrieb Mike Philipp:
Hallo Mike,
rsync kann das: rsync -avlH --delete JPG-DIR RAW-DIR die Optionen lH kannst Du Dir wahrscheinlich sparen, sie behandeln Sym- und Hardlinks!!!
rsync kann das nicht. Woher soll rsync denn wissen, das foo.raw eine Entsprechung in foo.jpg hat ?? Auch der andere post mit Synkron hat nullkommanix mit einer Lösung zu tun. [..] die einzige Lösung besteht wohl in einem 10 - Zeiler der die basenames aus beiden Verzeichnissen ausliest, vergleicht und entsprechend handelt. David kann das wohl am Besten. -- Beste Grüße Christian Paul 0176-280 52 873 schliEßlichle sendi emeiSt Enleut ehier mehralsdreIpo Stingsa Mtag sOd Asesdoch et. Waserm üdentwärdenkahnimmerrattentsumÜßenw aßIrge nDeinezUs Ahmäst ell unkvonbU chst, abensagenw iel ;-) (Tilman Ahr in dcoulm zum Thema "Rechtschreibfehler stoeren doch nicht") -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Christian! On Tue, 13 Jan 2009, Christian Paul wrote:
die einzige Lösung besteht wohl in einem 10 - Zeiler der die basenames aus beiden Verzeichnissen ausliest, vergleicht und entsprechend handelt.
ungetestet: for i in dir/*.raw; do j="${i%.raw}"; j="${j##*/}"; if [ ! -e dir2/"$j".jpg ]; then echo rm "$i"; fi; done wenns passt, das echo entfernen Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 82. AT&T names you Customer of the Month for the third consecutive time. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 13. Januar 2009 22:22:27 schrieb Christian Brabandt:
ungetestet:
for i in dir/*.raw; do j="${i%.raw}"; j="${j##*/}"; if [ ! -e dir2/"$j".jpg ]; then echo rm "$i"; fi; done
wenns passt, das echo entfernen
Vielen Dank für die Hilfe. Ich werde das Script gleich mal Testen. Gruß Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 13. Januar 2009 22:22:27 schrieb Christian Brabandt:
for i in dir/*.raw; do j="${i%.raw}"; j="${j##*/}"; if [ ! -e dir2/"$j".jpg ]; then echo rm "$i"; fi; done
Ich habe das Script entsprechend angepasst und ausführbar gemacht. #!/bin/bash for i in ~/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e ~/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done Nur wie starte ich es? Bei der Eingabe von Bildvergleicher (Name des Scripts) erhalte ich die Meldung: bash: Bildvergleicher: command not found Beim Aufruf mit ./Bildvergleicher erhalte ich die Meldung: bash: ./Bildvergleicher: Keine Berechtigung Was mache ich verkehrt? Gruß Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Nur wie starte ich es? Bei der Eingabe von Bildvergleicher (Name des Scripts) erhalte ich die Meldung: bash: Bildvergleicher: command not found Der sucht nur in Programmen, die in Ordnern der PATH-Variable sind. Das kannst du z.B. lösen, in dem du das Programm nach ~/bin/ kopierst, oder es so aufrufst, wie du es weiter unten beschrieben hast.
Beim Aufruf mit ./Bildvergleicher erhalte ich die Meldung: bash: ./Bildvergleicher: Keine Berechtigung Anscheinend ist bei der "Ausführbarmachung" etwas schiefgelaufen. Sende mal bitte die Ausgabe von `ls -l Bildvergleicher'
Was mache ich verkehrt? Nichts schlimmes^^
Gruß, Felix
Am Mittwoch, 14. Januar 2009 17:41:03 schrieb Mike Brumlich:
Am Dienstag, 13. Januar 2009 22:22:27 schrieb Christian Brabandt:
for i in dir/*.raw; do j="${i%.raw}"; j="${j##*/}"; if [ ! -e dir2/"$j".jpg ]; then echo rm "$i"; fi; done
Ich habe das Script entsprechend angepasst und ausführbar gemacht. #!/bin/bash for i in ~/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e ~/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done
Nur wie starte ich es? Bei der Eingabe von Bildvergleicher (Name des Scripts) erhalte ich die Meldung: bash: Bildvergleicher: command not found Beim Aufruf mit ./Bildvergleicher erhalte ich die Meldung: bash: ./Bildvergleicher: Keine Berechtigung
Was mache ich verkehrt? Berechtigung anpassen und mit dem Absoluten pfad ausführen
Gruß Mike
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch, 14. Januar 2009 17:41:03 schrieb Mike Brumlich:
Am Dienstag, 13. Januar 2009 22:22:27 schrieb Christian Brabandt:
for i in dir/*.raw; do j="${i%.raw}"; j="${j##*/}"; if [ ! -e dir2/"$j".jpg ]; then echo rm "$i"; fi; done
Ich habe das Script entsprechend angepasst und ausführbar gemacht. #!/bin/bash for i in ~/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e ~/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done
Nur wie starte ich es? Bei der Eingabe von Bildvergleicher (Name des Scripts) erhalte ich die Meldung: bash: Bildvergleicher: command not found Beim Aufruf mit ./Bildvergleicher erhalte ich die Meldung: bash: ./Bildvergleicher: Keine Berechtigung
ist die Partition, auf der Dein HOME liegt als noexec gemountet (siehe /etc/fstab)? -- Beste Grüße Christian Paul Why you can't find your system administrators: (S)he's at the pub, it's all *too* much. - Andrea Gibney a.gibney@mailbox.uq.oz.au -- Beste Grüße Christian Paul 0176-280 52 873 Why is Linux so stable? Because Penguins can't fly. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch, 14. Januar 2009 20:31:43 schrieb Christian Paul:
ist die Partition, auf der Dein HOME liegt als noexec gemountet (siehe /etc/fstab)? Ich habe das Script noch mal mit der Angabe des absoluten Pfades ausführbar gemacht. Jetzt kann ich es zumindest einmal starten, es gibt aber noch einen Schreibfehler im Script. Könnte bitte noch mal jemand ein Auge auf das Script werfen? Ich kenne mich leider in der Programmierung nicht aus. Hier noch mal das Script: #!/bin/bash
for i in /home/mike/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done die Fehlermeldung lautet: /home/mike/temp/Bildvergleicher.sh: line 6: syntax error near unexpected token `then' /home/mike/temp/Bildvergleicher.sh: line 6: ` if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then' Danke Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Mike! On Wed, 14 Jan 2009, Mike Brumlich wrote:
#!/bin/bash
for i in /home/mike/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done
die Fehlermeldung lautet:
/home/mike/temp/Bildvergleicher.sh: line 6: syntax error near unexpected token `then' /home/mike/temp/Bildvergleicher.sh: line 6: ` if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then'
Sieht ok aus. Gerade mal als einzeiler getestet, funktioniert. Bist du sicher, dass nicht irgendwelche Sonderzeichen drin sind? Im Zweifel tipp es von Hand ab bzw. mach einen einzeiler draus: for i in cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e jpg/"${j}".jpg | ]; then echo rm "$i"; fi; done (Eine Zeile im Verzeichnis ~/temp/ ausgeführt). Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 87. Everyone you know asks why your phone line is always busy ...and you tell them to send an e-mail. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi opensuse-de! On Wed, 14 Jan 2009, Christian Brabandt wrote:
Hi Mike!
On Wed, 14 Jan 2009, Mike Brumlich wrote:
#!/bin/bash
for i in /home/mike/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then echo rm "$i"; fi; done
Gerade mal per Hexeditor in Deine Mail reingeschaut. Du hast in deiner Mail da einen Haufen NO-BREAK SPACE (A0) anstelle eines normalen SPACE (Hex 20) reinbekommen. Das war in meiner Mail noch nicht und ich wette, das ist dein Problem. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 91. It's Saturday afternoon in the middle of may and you are on computer. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 14 Jan 2009, Mike Brumlich schrieb:
Am Mittwoch, 14. Januar 2009 20:31:43 schrieb Christian Paul:
ist die Partition, auf der Dein HOME liegt als noexec gemountet (siehe /etc/fstab)? Ich habe das Script noch mal mit der Angabe des absoluten Pfades ausführbar gemacht. Jetzt kann ich es zumindest einmal starten, es gibt aber noch einen Schreibfehler im Script. Könnte bitte noch mal jemand ein Auge auf das Script werfen? Ich kenne mich leider in der Programmierung nicht aus. Hier noch mal das Script: #!/bin/bash
for i in /home/mike/temp/cr2/*.cr2; do j="${i%.cr2}"; j="${j##*/}"; if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then
Ich mag [ .. ] statt 'test ...' nicht.
echo rm "$i"; fi; done
die Fehlermeldung lautet:
/home/mike/temp/Bildvergleicher.sh: line 6: syntax error near unexpected token `then' /home/mike/temp/Bildvergleicher.sh: line 6: ` if [ ! -e /home/mike/temp/jpg/"$j".jpg ]; then'
==== #!/bin/bash for raw in /home/mike/temp/cr2/*.cr2; do jpg="${raw%.cr2}"; jpg="${jpg##*/}.jpg"; if ! test -f "/home/mike/temp/jpg/${jpg}" ; then echo rm -i "$raw"; fi; done ==== Damit hast du aber noch ein Problem, wenn die Dateien nicht immer alle die Endungen nur mit Kleinbuchstaben haben. Dafür könntest du sowas nehmen: ==== nur minimal getestet ==== #!/bin/bash dir="/home/mike/temp/" for raw in "${dir}/cr2/"*.[Cc][Rr]2 ; do jpg="${raw%.[Cc][Rr]2}"; jpg="${jpg##*/}.jpg"; if ! find "${dir}/jpg/" -maxdepth 1 -type f -iname "${jpg}" | grep -c -i '\.jpg$' >/dev/null ; then echo rm -i "$raw"; fi; done ==== Auf die Anführungszeichen achten! Und das Script bitte erst nachvollziehen und testen! Das tut auch, wenn das jpg zu foo.cr2 'FOO.JPG' oder das zu FOO.CR2 foo.jpg heißt. Was bei Dateien aus FAT/VFAT ja gerne mal vorkommt. Eine Erweiterung auf '.jpeg' wäre evtl. auch noch möglich. Noch Fragen? HTH, -dnh -- I'd play with your mind, but I prefer bigger toys. -- Tyger -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Mike, Am Dienstag 13 Januar 2009 20:55:04 schrieb Mike Brumlich:
Am Dienstag, 13. Januar 2009 20:04:01 schrieb Mike Philipp:
Hallo Mike,
rsync kann das: rsync -avlH --delete JPG-DIR RAW-DIR die Optionen lH kannst Du Dir wahrscheinlich sparen, sie behandeln Sym- und Hardlinks!!!
Irgendwie funktioniert das nicht.Ich habe folgendes versucht rsync -av --delete /home/mike/temp/jpg /home/mike/temp/cr2
Dabei wird eine Kopie vom Ordner jpg im Ordner cr2 erzeugt. Das ist aber nicht das was ich möchte.
du wurdest offenbar von beiden Antwortern missverstanden, du brauchst kein sync tool sondern ein simples zb. shell script was per for ... loop in dem Master Verzeichnis nach files sucht davon den basename* ermittelt und dann mit den zu behaltenden files im slave verzeichnis etwas tut was sie zum behalten kennzeichnet zb. mv /slave/$bn.cr2 /slave/$bn.cr2.ok dann löscht du einfach die files die noch auf cr2 enden und benennst die .ok files in dem script wieder in .cr2 um. Fertig. *) der basename ist der filename ohne die Endung siehe man basename. Gruss Falk -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo ich danke Euch erst einmal für die Hilfe. Die Scripte werde ich mal am WE in Ruhe testen. Wenn noch Fragen auftreten sollten, melde ich mich noch mal Gruß Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (9)
-
Christian Brabandt
-
Christian Paul
-
Daniel Fuhrmann
-
David Haller
-
Falk Sauer
-
Felix Lemke
-
Mike Brumlich
-
Mike Philipp
-
Sven Burmeister