Betrifft: Terminal in Mac OS

Willi3

Neues Mitglied
Thread Starter
Dabei seit
20.04.2019
Beiträge
14
Reaktionspunkte
1
Guten Morgen, ich bin neu hier und benötige Hilfe für den Terminal.
Auf meinen externen Festplatten befinden zahlreiche Ordner mit hunderten gleichen Fotos. Nun gelang es mir mit den Befehl
diff -rq ordner1 ordner2 >> ordner.text
jene Fotos in ordner.txt sichtbar zu machen, die sich entweder nur in dem einen oder anderen Ordner befinden. Leider sind die Dateien in ordner.txt angeführten Fotos nur in Textform angegeben. Wie müßte der Befehl im Terminal lauten, um die unterschiedlichen Fotos tatsächlich in einen dritten Ordner zu verschieben? In ordner1 und ordner2 würden sich dann die gleichen Fotos befinden und einer könnte dann gelöscht werden.
Wer kann mir bitte helfen? Herzlichen Dank im Voraus.
Frohe Ostern!
Willi3
 
Dateinamensbasiert:
Code:
diff -rq ordner1 ordner2 | sed -n 's/://p' | awk '{print $3"/"$4}' | xargs -I {} mv {} einzigartig_ordner/

Oder mit sowas wie:
Code:
find ordner1 ordner2 -type f -exec sha1sum '{}' \+ | sort | uniq -u --check-chars 40 | awk '{print $2}' | xargs -I {} mv {} einzigartig_ordner/
mit sha1sum um es Dateiinhalt basierend zu machen.

habs nicht 100%ig durchgetestet, sieht auch sehr umständlich aus. Lange nicht mehr gemacht.. Immerhin hab ich ein Platz für AWK gefunden ;)

Die funktionierende, elegante Variante überlass ich für Olivetti, oneOeight oder sonst jemanden hier mit mehr Sk1llz ;)
 
ich weiß nicht, ob diff da das werkzeug der wahl bei fotos ist.
eigentlich ist es ja dafür gedacht, um text dateien zeile für zeile zu vergleichen.
klar, es kann auch binär dateien, aber bei fotos können sich ja auch nur meta daten unterscheiden o.ä.
 
Hallo oneOeight
Stelle dir vor, in einigen Ordnern befinden sich jeweils einige hundert Fotos von denen aber viele - aber nicht alle - gleich sind, also den gleichen Dateinamen haben. Mit diff ist es mir gelungen die Dateien mit unterschiedlichem Dateinamen in einem Textordner "als Information" zu speichern. Nun könnte man sich hinsetzen und die Dateien aus dem Textordner aufspüren und händisch zu verschieben. Bei einigen hundert Fotos ein nervenaufreibendes Unterfangen. Ich suche nun einen Terminalbefehl, der genau dieses Verschieben automatisch erledigt. Nach genau diesem Verschieben würden sich in den vergleichenden Ordnern die gleichen Dateien (Fotos) befinden und einer davon könnte gelöscht werden.
Grüße, Willi3
 
In der Mac & i 2/2019 wird die kostenlose App dupeguru empfohlen, um doppelte Bilder zu finden und zu löschen. Die Bedienoberfläche sei schlicht, erfordere aber etwas Einarbeitung. Das Tool könnte was für dich sein. Falls ich richtig gesucht habe, findest du es hier: https://dupeguru.voltaicideas.net/
 
Wenn es nur um Dateien gleichen Namens geht, dann kann das doch auch der Finder. Einfach den Inhalt von Ordner B in Ordner A verschieben. Dann warnt der Finder, dass in Ordner A bereits Dateien mit gleichem Namen existieren und bietet an, diese zu ersetzen oder zu überspringen. "Für alle" verhindert eine Nachfrage für jedes einzelne Duplikat.
 
diff -rq ordner1 ordner2 | sed -n 's/://p' | awk '{print $3"/"$4}' | xargs -I {} mv {} einzigartig_ordner/

Diesen Befehl habe ich ausprobiert, es hat leider nicht funktioniert. Mit dem 2. Befehl werde ich mich noch beschäftigen.
Jedenfalls besten Dank!
LG, Willi3
 
Betrifft: Na logisch, da du doch die Ausgabe in eine Textdatei umgeleitet hast!

Die Information aus der Textdatei war leider mein einziger Erfolg mit dem Terminal bisher. Mein Ziel ist es ja, die Dateien (Fotos) durch verschieben in einen dritten Ordner "körperlich" zu separieren, wodurch dann 2 Verzeichnisse gleichen Inhalts übrigbleiben würden, wovon dann einer gelöscht werden könnte.

Betrifft: Fotos nur aufgrund ihrer Dateinamen zu verschieben, finde ich gefährlich, da du keine Kontrolle hast, welche Bildinhalte wirklich drinstecken.

Tut mir leid, ich kann hier kein Risiko entdecken. Ich habe es mir seit vielen Jahren angewöhnt, meinen Fotos einen eindeutigen Dateinamen zuzuweisen und der besteht aus dem Aufnahmedatum, einer verbalen Bezeichnung und der von der Kamera zugewiesenen fortlaufenden Bildnummer, z. B. JJJJMMTT_Reise-nach-Berlin_DSCF123456.dng . Daß ein Foto mehr als einen Dateinahmen hat, ist ausgeschlossen, da ich grundsätzlich die fortlaufende Bildnummer nicht zurücksetze. Wenn ich dann mehrere Dateien mit gleichem Namen finde, dann sind es ganz sicher Duplikate.

Herzlichen Dank,
Willi3
 
Betrifft: In der Mac & i 2/2019 wird die kostenlose App dupeguru empfohlen, um doppelte Bilder zu finden und zu löschen. Die Bedienoberfläche sei schlicht, erfordere aber etwas Einarbeitung. Das Tool könnte was für dich sein. Falls ich richtig gesucht habe, findest du es hier: https://dupeguru.voltaicideas.net/

Danke für die Information, ich werde es ausprobieren.

Grüße, Willi3
 
Wenn es nur um Dateien gleichen Namens geht, dann kann das doch auch der Finder. Einfach den Inhalt von Ordner B in Ordner A verschieben. Dann warnt der Finder, dass in Ordner A bereits Dateien mit gleichem Namen existieren und bietet an, diese zu ersetzen oder zu überspringen. "Für alle" verhindert eine Nachfrage für jedes einzelne Duplikat.

Dieses Prinzip kenne ich, doch bei Verzeichnissen mit einigen hundert Fotos sehe ich dabei schon ein gewisses Risiko, daß das eine oder andere Foto dabei verloren geht. Nebenbei möchte ich auch den Terminal ein bißchen kennenlernen.

LG, Willi3
 
Dieses Prinzip kenne ich, doch bei Verzeichnissen mit einigen hundert Fotos sehe ich dabei schon ein gewisses Risiko, daß das eine oder andere Foto dabei verloren geht. Nebenbei möchte ich auch den Terminal ein bißchen kennenlernen.

LG, Willi3
Terminal kennenlernen ist ja ok, aber ich denke, dass die Gefahr dabei einen Schaden anzurichten größer ist als die Möglichkeit das der Finder Datei-Duplikate nicht erkennt.
Ich würde es in dem von dir beschriebenen Fall auch über den Finder machen.
 
diff -rq ordner1 ordner2 | sed -n 's/://p' | awk '{print $3"/"$4}' | xargs -I {} mv {} einzigartig_ordner/

Diesen Befehl habe ich ausprobiert, es hat leider nicht funktioniert. Mit dem 2. Befehl werde ich mich noch beschäftigen.
Jedenfalls besten Dank!
LG, Willi3

Du kannst ja die einzelnen Befehle ja auch alleine ausführen, und eine art "dry-run" generieren. Dann lernst du auch was dabei. Wenn du alles bis auf das | xargs -I {} mv {} einzigartig_ordner/ ausführst, siehst du welche Dateien verschoben werden würden. Evlt ist dein diff auch anders als das unter Linux, dann müsstest du das sed/awk anpassen. Ich hab hier leider kein OS X zum Testen. Mac OS X ist bekannt dafür steinalte Unix Userland Software auszuliefern, manchmal haben sie auch eigene BSD lizensierte. Das rsync beispielsweise ist 12 Jahre alt.

Edit: Ich hab gelesen (ohne es verifizieren zu können), es soll daran liegen, weil Apple keine GPL 3 Projekte nutzen will/kann. Evlt. hat rsync dann vor 12 Jahren die Lizenz von GPL 2 auf GPL 3 gewechselt?
 
Zuletzt bearbeitet:
Dieses Prinzip kenne ich, doch bei Verzeichnissen mit einigen hundert Fotos sehe ich dabei schon ein gewisses Risiko, daß das eine oder andere Foto dabei verloren geht.
… vertraust aber blind irgendwelchen Terminal-Commands, die du selber nicht verstehst?! Wenn du meinst …
 
diff -rq ordner1 ordner2 | sed -n 's/://p' |

Ich habe die ersten beiden Befehlsabschnitte nachvollzogen - "diff -rq ord1 ord2 | sed -n 's/://p' |" - , das Ergebnis war lediglich ein ">" am Terminal. Was sollte denn tatsächlich am Terminal erscheinen?
Herzlichen Dank für Deine Mühe,
Willi3
 
Zurück
Oben Unten