=> (LINUX) => Verzeichniss-Inhalte gegenchecken
Aqua
- software
Hallo!
Ich habe 2 Verzeichnise. Eines der beiden Verzeichnisse
war ursprünglich vor vielen Jahren mal die Sicherheitskopie des
anderen Verzeichnisses.
Das eine heisst "foo1" und das andere "foo2".
Wobei nicht klar ist ob foo1 oder foo2 die kopie des anderen ist.
Beide Verzeichnisse haben viele Unterverzeichnisse
mit vielen anderen Unterverzeichnissen und Dateien.
Ich will herausfinden, wo die Unterschiede liegen.
Also in welchen Verzeichnissen welche Dateien nicht vorhanden sind,
die im anderen vorhanden sind.
Ein zippen und checksum faellt flach,
weil ich dann ja nicht wüsste,
welche Datei es in einem der beiden Verzeichnisse gibt
die es im anderen nicht gibt.
Es sollte so sein,
dass ich in einer Art liste sehe welche Dateien in einem der beiden Verzeichnisse
vorhanden sind, die im anderen Verzeichnis nicht da sind.
Wie gesagt kann es sein dass ich in "foo1" oder auch in "foo2" mehr
Dateien drinnen sind.
Danke für jedwege Hilfe!
Euer Aqua
re
Detlef sagte mir im Chat gerade ich soll noch dazuschreiben:
Folgende Dateien sind in "foo1" vorhanden und in "foo2" nicht:
() ./bleh.txt
() ./blablubb.abc
() ./dsfdsf.doc
LG
Aqua
Hello,
Detlef sagte mir im Chat gerade ich soll noch dazuschreiben:
- OS ist Linux Debian
- Ich frage nach der Möglichkeit eine Liste auszugeben
im Stil von:Folgende Dateien sind in "foo1" vorhanden und in "foo2" nicht:
() ./bleh.txt
() ./blablubb.abc
() ./dsfdsf.doc
Da hilft nur ein Script, denn cmp scheint von Haus aus nicht rekursiv zu arbeiten.
Man muss ja auch einmal das eine gegen das andere und dann das andere gegen das eine Verzeichnis (nebst Unterverzeichnissen) abgleichen, um die Nicht-Schnittmengen zu ermitteln.
Vergleichen braucht man dann nur die Schnittmenge. Logisch, oder? *gg*
In PHP gibt es die wunderbare Funktion glob(), die Dir schonmal die beiden Verzeichnisinhalte besorgt, ganz ohne Mühe. In der Shell geht das bestimmt auch zu programmieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
Detlef sagte mir im Chat gerade ich soll noch dazuschreiben:
- OS ist Linux Debian
- Ich frage nach der Möglichkeit eine Liste auszugeben
im Stil von:Folgende Dateien sind in "foo1" vorhanden und in "foo2" nicht:
() ./bleh.txt
() ./blablubb.abc
() ./dsfdsf.docDa hilft nur ein Script, denn cmp scheint von Haus aus nicht rekursiv zu arbeiten.
Jein, ls kann rekursiv arbeiten. Und mehr brauchen wir garnicht.
Man muss ja auch einmal das eine gegen das andere und dann das andere gegen das eine Verzeichnis (nebst Unterverzeichnissen) abgleichen, um die Nicht-Schnittmengen zu ermitteln.
Richtig.
Vergleichen braucht man dann nur die Schnittmenge. Logisch, oder? *gg*
Das ist ganz egal, wenn man einen Geeigneten Algorithmus hat, der 0==0 und 1==1 rausfiltert.
In PHP gibt es die wunderbare Funktion glob(), die Dir schonmal die beiden Verzeichnisinhalte besorgt, ganz ohne Mühe. In der Shell geht das bestimmt auch zu programmieren.
ls -la -R foo1 > foo1.diff;ls -la -R foo2 > foo2.diff;diff foo1.diff foo2.diff | less;rm *.diff
Grüße aus Barsinghausen,
Fabian
Hallo,
Folgende Dateien sind in "foo1" vorhanden und in "foo2" nicht:
() ./bleh.txt
() ./blablubb.abc
() ./dsfdsf.doc
Ich wuerde dafuer das wunderschoene Programm unison empfehlen:
http://www.cis.upenn.edu/~bcpierce/unison/
Sogar mir grafischer Oberflaeche.
Viele Gruesse,
Gero
Hi,
Ich wuerde dafuer das wunderschoene Programm unison empfehlen:
http://www.cis.upenn.edu/~bcpierce/unison/
Sogar mir grafischer Oberflaeche.
Das zerstört die Ästhetik der Kommandozeile ;-)
Grüße aus Barsinghausen,
Fabian
Tach,
Das zerstört die Ästhetik der Kommandozeile ;-)
Ja nee, geht ja auch auf der Kommandozeile. Sonst wuerde ich es doch niemals als "wunderschoen" bezeichnen ;)
Viele Gruesse,
Gero mit alias emacs='emacs -nw'
Hi,
Das zerstört die Ästhetik der Kommandozeile ;-)
Ja nee, geht ja auch auf der Kommandozeile. Sonst wuerde ich es doch niemals als "wunderschoen" bezeichnen ;)
Naja... das will ich dann mal gelten lassen ;-)
Grüße aus Barsinghausen,
Fabian