Forum: PC-Programmierung Skript gesucht: Aus mehreren kleinen Dateien eine große + anderes Format


von Elektroenthusiast (Gast)


Lesenswert?

Folgendes sei gegeben: Auf einem Netzlaufwerk liegen verschiedene 
Software-Releases ab. Jeder Release liegt in einem eigenen 
Unterverzeichnis, das jeweils die Versionsnummer als Namen hat. 
Beispiel:

S:\SW-Releases\Release_001
S:\SW-Releases\Release_002
S:\SW-Releases\Release_003

usw.

Nun liegt in jedem einzelnen dieser Verzeichnisse auch eine kleine 
Textdatei "readme.txt". Diese enthält Informationen über die Änderungen 
in dem jeweiligen Release. Die Aufgabe ist nun: Wie kann man ein Skript 
erstellen, das über die verschiedenen Unterverzeichnisse iteriert, den 
Inhalt der einzelnen Textdateien zusammenfasst, und als Ausgabe eine 
einzelne große Textdatei generiert?

In einem nächsten Schritt würde ich dann diese einzelne große Textdatei 
gerne in andere Formate konvertieren. Zum Beispiel:

Rich Text .rtf
Word .doc, .docx
Excel .xls, .xlsx

Was für Möglichkeiten gibt es da?

von Frank (Gast)


Lesenswert?

1. Schritt:

find . -name 'readme.txt' -exec cat {} >> gesamt_readme.txt

von Frank (Gast)


Lesenswert?

Frank schrieb:
> find . -name 'readme.txt' -exec cat {} >> gesamt_readme.txt

Semikolon vergessen:

find . -name 'readme.txt' -exec cat {} \; >> gesamt_readme.txt

von CC (Gast)


Lesenswert?

for i in Releases_[0-9][0-9][0-9]/readme.txt ; do cat $i >> complete.txt 
; done

oder for i in `find readme.txt` ; do ...

Benötigt aber die bash o.ä., kriegt man mit cygwin o.ä.

Konvertieren: kommt aufs Format an...

von Frank (Gast)


Lesenswert?

Frank schrieb:
> find . -name 'readme.txt' -exec cat {} \; >> gesamt_readme.txt

Semikolon an der falschen Stelle :-(

find . -name 'readme.txt' -exec cat {} >> gesamt_readme.txt \;

von Robert L. (lrlr)


Lesenswert?

convertieren (angeblich) mit:

soffice -headless -convert-to {hier das zielformat) 
YOUR-DOCUMENT-HERE.txt

von Joerg W. (joergwolfram)


Lesenswert?

nicht nur angeblich:

soffice --headless -convert-to doc gesamt_readme.txt

funktioniert zumindest unter Linux ohne Probleme

Jörg

von Elektroenthusiast (Gast)


Lesenswert?

CC schrieb:
> for i in Releases_[0-9][0-9][0-9]/readme.txt ; do cat $i >> complete.txt
> ; done
>
> oder for i in `find readme.txt` ; do ...
>
> Benötigt aber die bash o.ä., kriegt man mit cygwin o.ä.

MinGW hab ich hier. Funktioniert das denn auch mit den Windows 
Netzlaufwerk-Buchstaben?

von Εrnst B. (ernst)


Lesenswert?

Ach geh. Dateien suchen & zusamenfassen ging doch schon unter DOS...

Statt "find" halt "DIR /S", statt "cat" halt "TYPE" usw.

Und mit der MS-Powershell vermutlich noch viel, viel einfacher.



Nur weil dir hier alle erzählen, wie einfach das gewünschte doch unter 
Linux wär, bedeutet das nicht, dass der einfachste Weg unter Windows 
über eine Unix-Emulation führt..

: Bearbeitet durch User
von Elektroenthusiast (Gast)


Lesenswert?

Von mir aus auch eine Windows .bat Datei oder wie das heutzutage 
neumodisch heißt. ;-) Hauptsache ich kann über die 
Netzlaufwerk-Verzeichnisse iterieren. Das krieg ich nämlich bisher nicht 
hin.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.