Existieren alle Dateien aus Ordner A in Ordner B inkl. allen Unterordnern?

S

Sharptype

Aktives Mitglied
Thread Starter
Dabei seit
23.05.2015
Beiträge
1.179
Reaktionspunkte
112
Moin zusammen,

bevor ich nach meiner erfolglosen Recherche anfange mir extra ein Programm in C# .NET zu programmieren, wollte ich euch mal fragen, ob es vielleicht auch ohne Programmierung eine Möglichkeit gibt folgendes herauszufinden:

In einem Ordner A sind unzählige Dateien. Teilweise in dem Ordner-Root selbst, teilweise in verschiedenen Unterordnern von Ordner A. Alles was ich will ist herauszufinden, ob all diese Dateien ab der obersten Ebene von Ordner A (also auch inkl. allen Dateien verteilt in den optional vorhandenen Unterordnern) sich in Ordner B und dessen möglicherweise anders lautende Unterordner (Ordner umbenannt, anders strukturiert usw.) befinden.
Anders gesagt: Ab Ebene Ordner A befinden sich X Dateien und die Frage ist, befinden sich all diese Dateien auch ab der Ebene Ordner B?
Im besten Fall will ich noch herausfinden welche das sind und diese irgendwie verschieben in einen separaten Ordner, dass ich mit denen Folgeoperationen durchführen kann.

Hat da jmd eine Idee?
TotalCommander und ForkLift habe ich, falls das hilft :rolleyes: ...und Visual Studio :D:D

Danke für eure Tipps und einen guten Start morgen in die kurze Woche!
 
BeyondCompare, das Schweitzer Messer der Compare Tools, hat eine Option im Ansichtsmenü um die Ordnerstruktur bei einem Ordnervergleich zu ignorieren.

Und verschieben lassen sich die Files dann auch.

Kostet allerdings auch ein paar Taler
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: win2mac
BeyondCompare, das Schweitzer Messer der ...
Wie sind hier nicht im Forum Mac OS Apps, sondern Scripting und Automatisierung.
Als erstes könnte man mit:
Code:
set locationA to do shell script "find -s ~/Pfad/zum/OrdnerA -type f -exec basename {} \\;"
die gesamten Inhalte der Ordner aufrufen. Danach jede einzelne Datei mit dem gesamten Inhalt des anderen Ordners vergleichen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Phrasenbieger, Sharptype, Schiffversenker und eine weitere Person
oder ganz klassisch mit rsync.
gibt auch ne -listonly Option.
 
  • Gefällt mir
Reaktionen: Sharptype
Moin.

Wow also erstmal vielen Dank für die ganzen Tipps :cake:. Es sieht nicht so aus, als müsste ich mich extra dransetzen und das Rad neu erfinden. Das gefällt mir schon mal gut:)
Auf die die genannten Möglichkeiten bin ich selbst gar nicht gekommen. Wichtig ist, dass ich das Ganze auf notfalls eine ganze Festplatte mit tausenden von Bildern anwenden kann. Und das sind einige. Ein grafischer Ordner-Vergleich mit GUI-Tools sehe ich da etwas kritisch (ein paar Versuche habe ich mit dem Total-Commander hinter mir :suspect:). Es geht auch nicht um einen inhaltlichen Vergleich der Dateien sondern lediglich "Datei(name) vorhanden" oder nicht.

die gesamten Inhalte der Ordner aufrufen. Danach jede einzelne Datei mit dem gesamten Inhalt des anderen Ordners vergleichen.
Das klingt interessant. Das ganze ist ein Apple-Script und alle Dateinamen vom Ordner A werden in der Variable "locationA" gespeichert?
Das ganze dann für den Ordner B und dann irgendwie den Abgleich machen?

oder ganz klassisch mit rsync.
gibt auch ne -listonly Option.
Das finde ich auch interessant. Da es hier ja einen Fortschritts-Anzeige-Parameter gibt und ich sehr viele Dateien prüfen muss bzw. große Ordner mit vielen Dateien / einer umfangreichen Struktur, nwäre das vielleicht die beste Variante.
Aber wenn ich mit rsync "Rumprobiere" (bin leider kein rsync Experte) muss das gleich funktionieren. Nicht, dass er aus versehen anfängt etwas zu syncen, was er gar nicht soll :hamma:
 
Geht es nur um Dateinamen? (gleiche Dateinamen können ja unterschiedliche Dateien sein)
 
  • Gefällt mir
Reaktionen: Phrasenbieger
Also ja das stimmt schon mit den Dateinamen. Könnten ja in unterschiedlichen Ordnern sein, aber gleich heißen :hum: Daran hab ich natürlich nicht gedacht :hamma:
Dann wäre wohl doch rsync mit Inhaltsvergleich besser, oder?

Aber ein Inhaltsvergleich würde ewig dauern und ich will regelmäßig prüfen, ob der Inhalt (alle Dateien) eines Ordners irgendwo auf der besagten Festplatte enthalten ist (wo ist mir dabei egal) :hum:
 
nimm einfach #5.
 
Du könntest auch tree für beide Order aufrufen und das Ergebnis in je eine Textdatei leiten. Dann mit dem Diff Tool deiner Wahl die Unterschiede anzeigen. Dann bist du garantiert „read only“ unterwegs.
Code:
cd ordner1
tree > ordner1.txt

cd ../ordner2
tree > ordner2.txt
(Code ungetestet auf dem iphone geschrieben..)
Ich denke, du verstehst die idee, wenn du visual studio verwendest...

Edit: lesen bildet, ich hatte übersehen, dass du abweichend benannte Zwischenebenen hast... Das geht mit tree dann nicht. Dann eine Kombination aus ls, grep und sort. Dafür ist mir jetzt aber zu spät und meine Zugfahrt endet jetzt zum Glück auch gleich:)
 
Zuletzt bearbeitet:
Also ja das stimmt schon mit den Dateinamen. Könnten ja in unterschiedlichen Ordnern sein, aber gleich heißen :hum: Daran hab ich natürlich nicht gedacht
Wenn es 10000e von Fotos sind ist die Chance sehr hoch, dass der Zähler an der Kamera übergelaufen ist und viele Dateien gleich heißen.
 
Moin,

danke für die ganzen Antworten/Tipps. Ich schreibe mal einen Zwischenstand:

- Das was ich ursprünglich schrieb, dass es wohl ausreicht nur zu prüfen, ob der Dateiname einer Datei aus Ordner A mindestens einmal in dem Ordner B vorkommt, trifft nicht (mehr) zu. Es müsste tatsächlich der Dateiinhalt verglichen werden, da es mehrere gleichbenannte Dateien geben kann, welches aber andere Bilder sind, da habt ihr schon recht und das habe ich nicht bedacht :rolleyes:
- Die Problem/Aufgabenstellung ist lediglich auszugeben welche Dateien eines Ordners A (samt irgendeiner Unterstruktur) sich nicht mindestens einmal in dem Ordner B (samt irgendeiner anderen Unterstruktur) befinden (nach Dateiinhalt)
- Es soll nichts kopiert oder synchronisiert werden, ich möchte nur ausgegeben bekommen, welche Dateien das sind
- Das Ganze muss so performant wie nur möglich sein (am besten ohne GUI), da Ordner B sozusagen Root meiner Bilderfestplatte ist :D
 
Ok, interessant. Und was ist der aktuelle Stand wie Du das Problem angehen willst?
 
Naja ich wühle mich gerade durch die rsync Dokumentation, aber hab nicht so richtig mehr das Gefühl, dass rsync dafür geeignet wäre. Eben weil die Dateien überall in den Unterordnern verstreut sind und es mir reicht, wenn die Datei aus Ordner A einmal irgendwo in Ordner B vorkommt.

Vielleicht müsste ich mir eine inkrementelle Prüfsummendatei aufbauen, die alle Dateien von Ordner B enthält und regelmäßig auf Stand gehalten wird. Über diese Prüfsummendatei dann "irgendwie mit irgendwas" geschickt den Inhalt von Ordner A laufen lassen und die Items, die nicht in der Prüfsummendatei mindestens einmal vorkommen irgenwo in einen Unterordner packen. Der Inhalt des Unterordners ist dann das nach was ich suche.

Aber das riecht schon wieder nach Visual Studio, worauf ich eigentlich keine Lust habe :hehehe:

Mein Hirn brennt und ich bin kein Command-Line-Experte, das macht es zum Problem :D:motz:
:hehehe: :hamma:

Die inkrementelle Prüfsummendatei macht zumindest den regelmäßigen Durchlauf um einiges performanter, als wenn er jedesmal aufs Neue den gesamten Inhalt von Ordner B abprüfen muss, um diesen mit dem Ordner A abzugleichen.
 
Zurück
Oben Unten