PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Textdateien zusammenfassen


Gast
2008-05-19, 09:14:18
Hallo,

ich habe folgende Verzeichnisstruktur:

/.../eins/
/.../zwei/
/.../drei/
usw.

In jedem Verzeichnis befinden sich 2 Dateien:
a.txt
b.txt

Nun bräuchte ich ein Skript, das die Dateien automatisch zusammenfasst. Also sollten alle a.txt in ages.txt zusammengefasst werden, alle b.txt in bges.txt. Mein Problem ist, dass sich die Anzahl der Verzeichnisse unterscheidet. Manchmal sind es 10, manchmal 200.

Das Skript sollte also automatisch eincat /.../eins/a.txt /.../zwei/a.txt /.../neunundneuzig/a.txt > ages.txt ausführen für alle Verzeichnisse. Ich habe es schon mit den verschiedensten Schleifen versucht, aber es klappt einfach nicht.

sun-man
2008-05-19, 09:36:24
Ich bin jetzt nicht der scriptkönig und kenne mich da unter Linux kaum aus.
Wenn die aber alle z.B. unter /verzeichniss liegen dann

for i in `find /verzeichniss/ -name a.txt`
do
cat $i >> /tmp/ausgabe.txt
done

Ich hab das jetzt nicht geprüft. Ich hab eh nur Solaris. Müsste funzen. Er schreibt jetzt eben alles nacheiander in ausgabe.txt und wenn Du es zweimal ausführst wieder dahinter. Müßte man also nach einem Run wegsichern. Wenn die XT Dateien natürlich sonstwo wild im System verteilt sind ist es doof.

(del)
2008-05-19, 09:42:55
#!/bin/bash

zusammenfassen () {
while read line
do
cat "${line}" >> ages.txt
done
}

find * | grep a.txt | zusammenfassen

Das hier sollte dir die a dateien zusammenfügen. mit b geht es dann analog.
Musst du aus dem verzeichnis heraus ausführen, dem alle verzeichnisse mit den a.txt untergeordnet sind.

Wenn alle a.txt gleich "tief" liegen, geht auch ein einfaches:
cat */a.txt >> ages.txt
oder, falls sie 2 verzeichnisse tief liegen
cat */*/a.txt >> ages.txt

lg
bazooka

Gast
2008-05-19, 09:44:35
Super! Funktioniert. Vielen Dank. Manchmal kommt man nicht auf die einfachsten Lösungen.