cat, viele Dateien in verschiedenen Verzeichnissen?

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
sonya
Beiträge: 84
Registriert: 28.07.2007 07:55:33

cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von sonya » 31.05.2009 19:13:37

Hallo,

ich muss viele verschiedene Dateien aus verschiedenen Verzeichnissen zusammenführen.
Mit cat kann ich ja beliebige Dateien leicht zusammenführen.
Nun mein Problem.
Verzeichnisse A-K
In jedem dieser Verzeichnisse gibt es Textdateien in der Art a1, b1, c1, d1, e1, f1, g1, h1, ...
Nun sollen aus dem Verzeichnis A und B die die Dateien a1 in das Verzeichnis A_B zusammengeführt werden.
Wären das nur 3 Dateien, wäre das Ganze ja kein Problem. Nur habe ich hier viele Verzeichnisse mit jeweils vielen Dateien vorliegen 8O
Es müssen immer die Dateien mit der gleichen Bezeichnung also a1 aus Verzeichnis A und B jeweils im Verzeichnis A_B zusammengeführt werden.
Im Verzeichnis A_B liegt dann eine Datei a1 als Zusammenführung aus A/a1 und B/a1
- A_B/b1 aus den Dateien A/b1 und B/b1 zusammengeführt
- A_B/c1 aus den Dateien A/c1 und B/c1 zusammengeführt
- A_B/d1 aus den Dateien A/d1 und B/d1 zusammengeführt
- ...
Kann das irgendwie per cat oder Anderem automatisiert werden?
Vielleicht kann ja eine Dateiliste helfen und irgendwie an cat übergeben werden? Die jeweiligen Verzeichnisse und Dateien tragen immer die gleichen Bezeichnungen.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt.

Einen schönen Abend wünscht Sonya

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von rendegast » 31.05.2009 20:50:41

Sowas?

Code: Alles auswählen

$ cat /sys/block/hd*/size 
156368016
156368016
8388604

$ cat /sys/block/*/dev
2:0
3:0
3:64
22:0
1:0
1:1
1:10
1:11
1:12
1:13
1:14
1:15
1:2
1:3
1:4
1:5
1:6
1:7
1:8
1:9
8:0
8:16
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

sonya
Beiträge: 84
Registriert: 28.07.2007 07:55:33

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von sonya » 31.05.2009 21:05:07

rendegast hat geschrieben:Sowas?

Code: Alles auswählen

$ cat /sys/block/hd*/size 
156368016
156368016
8388604

$ cat /sys/block/*/dev
2:0
... ...
Hallo rendegast,
vielen Dank für Deine Mühe.
Nur verstehe ich leider nicht, was das mit meinen oben aufgeführten Dateien und Verzeichnissen zu tun hat :oops:

LG
Sonya

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von gms » 31.05.2009 21:17:30

rendegast wollte deine Aufmerksamkeit auf die Wildcards lenken ( denke ich :roll: )

anderes Beispiel

Code: Alles auswählen

gms1 ~ # cd tmp/
gms1 tmp # mkdir a b c
gms1 tmp # touch a/a1 b/b1
gms1 tmp # ls [a-b]/[a-b]*
a/a1  b/b1
gms1 tmp # ls -l [a-b]/[a-b]*
-rw-r--r-- 1 root root 0 2009-05-31 21:13 a/a1
-rw-r--r-- 1 root root 0 2009-05-31 21:13 b/b1
Gruß
gms

sonya
Beiträge: 84
Registriert: 28.07.2007 07:55:33

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von sonya » 31.05.2009 21:44:28

Hallo gms,
gms hat geschrieben:rendegast wollte deine Aufmerksamkeit auf die Wildcards lenken ( denke ich :roll: )
Da muß Mensch natürlich erst einmal darauf kommen. Danke für den Holzknüppel ... ;)

An "*" habe ich natürlich auch schon gedacht.
Nur bin ich kein Programmierer und da letztlich immer nur a mit a und b mit b verbunden werden sollen, dazu die jeweiligen Dateien in verschiedenen Verzeichnissen, war das mit dem "*" für mich erst einmal eine Sackgasse.
gms hat geschrieben: anderes Beispiel

Code: Alles auswählen

gms1 ~ # cd tmp/
gms1 tmp # mkdir a b c
gms1 tmp # touch a/a1 b/b1
gms1 tmp # ls [a-b]/[a-b]*
a/a1  b/b1
gms1 tmp # ls -l [a-b]/[a-b]*
-rw-r--r-- 1 root root 0 2009-05-31 21:13 a/a1
-rw-r--r-- 1 root root 0 2009-05-31 21:13 b/b1
Gruß
gms

Kleine Frage nebenbei. Arbeitest Du immer als root ("gms1 tmp # ")?

Die Sache mit dem "/" ist sehr interessant. Kannte ich noch gar nicht.
Will also heißen, das ist meine Lösung?
Müsste ich die Sache nur noch mit cat in Verbindung bringen.

Einfacher ging es natürlich mit einer Verzeichnis/Dateiliste. Die liegt ja schon vor. Etwa diese Art:
Liste_Dateien_Verz_A.txt:
A/a1
A/b1
A/c1
A/de
...
...

Liste_Dateien_Verz_B.txt:
B/a1
B/b1
B/c1
B/de
...
...

Eine Dateiliste.txt kann ich ja an cat übergeben. Nur werden dann immer alle aufgeführten Dateien zusammengefügt :twisted:

Immer noch Ratlos
Sonya

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von gms » 31.05.2009 22:00:19

sonya hat geschrieben:Kleine Frage nebenbei. Arbeitest Du immer als root ("gms1 tmp # ")?
nein, das soll keine Vorbildwirkung haben :lol:
sonya hat geschrieben:Müsste ich die Sache nur noch mit cat in Verbindung bringen.
wäre soetwas in der Art eine Lösung

Code: Alles auswählen

for w in a b c d e f g h i j k l m n o p q r s t u v w x y z; do
  cat [A-B]/$w > A_B/$w
done

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von gms » 31.05.2009 22:47:48

sonya hat geschrieben: Eine Dateiliste.txt kann ich ja an cat übergeben. Nur werden dann immer alle aufgeführten Dateien zusammengefügt :twisted:
das Problem mit deinen Dateilisten, die sind auch noch nach Verzeichnissen getrennt, also müssen wir diese zusammenführen, das können wir aber direkt über die Verzeichnisse auch:

Code: Alles auswählen

find [a-b] -type f | while read F; do basename "$F"; done | sort -u 
wenn wir danach noch die Dateinamen auslesen wollen und mit cat die Dateien zusammenführen wollen, müßte das etwa so funktionieren:

Code: Alles auswählen

find [a-b] -type f | while read F; do basename "$F"; done | sort -u | while read N; do cat [a-b]/"$N" >a_b/"$N"; done
Gruß
gms

sonya
Beiträge: 84
Registriert: 28.07.2007 07:55:33

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von sonya » 31.05.2009 23:41:10

Hallo gms,

ich bedanke mich herzlich für deine Mühe.
Nur sind ja, wie Eingangs erwähnt in den Verzeichnissen A bis M jeweils die Dateien a1 bis u1 vorhanden.

Zunächst einmal benötige ich dringend im (neuen) Verzeichnis A_B aus dem Verzeichnis A und B die beiden a1 zusammengefasst, dann die beiden b1, dann die c1 usw. u.s.f bis u1
Ich habe es jetzt ganz einfach und simpel gelöst ;)
Habe mir die Dateiliste vorgenommen. In OOocalc einfach die Verzeichnissliste des Verzeichnisses "A" in eine Spalte, Liste von"B" in eine 2te Spalte dahinter eine Spalte mit ">A_B". Dahinter eine Spalte mit wiederum den einkopierten Dateien. ganz vorn eine Spalte nach unten ausgefüllt mit "cat". ganz oben eine Zeile eingefügt. In A2 die Zeichenfolge "#!/bin/bash" eingefügt. Das Ganze in eine "cat-dateilistea_b.sh" hineinkopiert und ausführbar gemacht. Zuvor noch per suchen und ersetzen ein paar Tabulaturen in der Textdatei eliminiert.
Das ganze ausgeführt.
War eine Sache von nicht mehr als 5 Minuten :)
OK, nicht ganz soooo wie Ihr Euch das hier so vorzustellen wünscht. Aber, es hat funktioniert :idea:

Danke und einen schönen Abend
Sonya

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: cat, viele Dateien in verschiedenen Verzeichnissen?

Beitrag von gms » 31.05.2009 23:49:30

sonya hat geschrieben: War eine Sache von nicht mehr als 5 Minuten :)
OK, nicht ganz soooo wie Ihr Euch das hier so vorzustellen wünscht. Aber, es hat funktioniert :idea:
jede Lösung führt ans Ziel :wink:

hauptsache es funkt

Gruß
gms

Antworten