Dateien zusammenführen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von este, 02.12.2006.

  1. este

    este Grünschnabel

    Dabei seit:
    02.12.2006
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo,

    ich habe ca. 8000 1-10 MB grosse Text-Dateien (1.dat...2.dat...n.dat).
    Diese möchte ich nun der Reihe nach Aufsteigend in eine Datei zusammenführen.
    Nun wäre es schön, ohne die Anzahl der Dateien zu kennen, diese automatisch zusammenführen zu lassen.

    Gut wäre zum Beispiel, wenn ich n.dat wüßte. Also die Datei mit der höchsten Numerierung um dann ein Abbruchkriterium für eine Schleife zu haben.

    Zusammenführen würde ich dann mit cat wobei ich mir die Parameter
    dann in einer Schleife zusammenbauen würde.

    Das sollte dann folgendermassen aussehen:
    cat 1.dat 2.dat n.dat > merged.dat

    Hat jemand eine Idee?

    gruss
    este
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Wieviele Dateien es sind, kannst du mit
    Code:
    ls /verzeichnis/der/dateien/ | wc -l
    
    ermitteln.
     
  4. #3 root1992, 02.12.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    cat * > ausgabe
     
  5. #4 x-lette, 02.12.2006
    x-lette

    x-lette Mitglied

    Dabei seit:
    23.04.2006
    Beiträge:
    44
    Zustimmungen:
    0
    Ort:
    Berlin
    Naja, wenn die Reihenfolge dann stimmt ....
    Dateien werden in diesem Fall unsortiert ausgegeben, also in der Reihenfolge, wie sie auf der Platte kommen (stimmt das soweit??).
    Aber es wurde explizit nach einer Sortierung anhand des Dateinamens gefragt. Dann sollte dies auch sichergestellt werden.

    Gruß
    XL
     
  6. #5 angelsfall, 02.12.2006
    Zuletzt bearbeitet: 03.12.2006
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Also ich würds so machen, vorausgesetzt, du hast perl installiert:

    Code:
    perl -we 'map { `cat $_.dat >> merged.dat` } sort { $a <=> $b } grep { s/(\d)\.dat/$1/ } split "\n", `ls`';
    Es ist quick&dirty und nur mit 4 Dateien getestet, aber vielleicht hilfts ja :)
    Gebe jedenfalls keine Garantie.

    /edit: Korrigiert. Hatte nicht ganz gefunzt ;)
     
  7. #6 root1992, 03.12.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Das mit dem Sortiern hab ich überlesen, sorry. Aber wenn es Numerisch ist, wie oben angegeben (1.dat, 2.dat, n.dat) dann könnte er es richtig machen wenn es mit 0 aufgefüllt ist, alsoe 00001.dat, ... . eine kleine for-schleife mit mv usw. dann wäre es mit 0 aufgefüllt.
     
  8. #7 Ponder_Stibbons, 03.12.2006
    Ponder_Stibbons

    Ponder_Stibbons Slackware Fan

    Dabei seit:
    03.08.2004
    Beiträge:
    166
    Zustimmungen:
    0
    Wie wäre es mit
    Code:
    sort -g * | cat >> merged.dat
    Dadurch wird das Problem der Sortierung umgangen
     
  9. #8 x-lette, 03.12.2006
    x-lette

    x-lette Mitglied

    Dabei seit:
    23.04.2006
    Beiträge:
    44
    Zustimmungen:
    0
    Ort:
    Berlin
    :D Klar ginge das, aber damit wäre das Problem nur eine Stufe vorgezogen.
    Für die genannte Schleife müßtest du ja auch die Dateien in der korrekten Reihenfolge lesen um sie dann umzubenennen.
    Dann kannst du sie auch gleich cat-ten. :)
     
  10. #9 angelsfall, 03.12.2006
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Nicht ganz, da er nach Inhalt der Dateien sortiert, nicht nach dem Namen.

    Ich habe mein Perl-Beispielt oben angepasst, das war auch nicht ganz sauber. ;) Sollte jetzt aber funktionieren.
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Ponder_Stibbons, 03.12.2006
    Zuletzt bearbeitet: 03.12.2006
    Ponder_Stibbons

    Ponder_Stibbons Slackware Fan

    Dabei seit:
    03.08.2004
    Beiträge:
    166
    Zustimmungen:
    0
    Stimmt X(
    War wohl doch schon etwas zu spät gestern ;(

    Aber es geht trotzdem auch mit reinem Shellskript ohne Perl
    Code:
    for file in $(ls|sort -g) ; do cat $file >> merged.dat ; done
    Grüße, Klaus
     
  13. #11 angelsfall, 03.12.2006
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Will ich ja nicht ausschließen, aber ich programmiere doch so gerne in Perl ;)
     
Thema:

Dateien zusammenführen

Die Seite wird geladen...

Dateien zusammenführen - Ähnliche Themen

  1. PDF Dateien (mehrere) zusammenführen in ein PDF ?

    PDF Dateien (mehrere) zusammenführen in ein PDF ?: Moin Moin, gibt es unter openSUSE 10.2 ein Tool oder eine Anwendung, welche mehrere PDF Dateien zu einer zusammenführen kann ? Wenn wo...
  2. Dateien splitten und wieder zusammenführen???

    Dateien splitten und wieder zusammenführen???: :hilfe2: Hallo zusammen, wenn ich folgenden Befehl nutze: split --bytes=100m --verbose --suffix-length=3 image.iso part_ werden aus...
  3. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  4. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  5. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...