Hallo, ich habe mehrere CSV Dateien mit Dateinamen "1.csv 2.csv ... 200.csv". Inhalt ist jeweils 1x Headerzeile (in allen dateien identisch) + rest "Daten". Zwei Fragen: 1. Ich möchte die Dateien mit einem (Linux) bash/shell Befehl in eine einzige Datei zusmmenkopieren sodass das Ergebnis nurnoch 1x header + den inhalt aus allen Dateien hat. 2. Da die Dateinamen "menschlich" 1 ... 200 sortiert sind, kommt z.b. 10 vor 2, wie kann ich das richtig sortiert an den Befehl aus 1 übergeben? (daten sollten die richtige reihenfolge haben wie die dateinamen) Danke! Concat
1 | { head -n1 1.csv; for f in $(ls [1-9]*.csv | sort -n); do tail -n+2 "$f"; done; } >all.csv |
Oder etwas kürzer:
1 | { head -n1 1.csv; tail -qn+2 $(ls [1-9]*.csv | sort -n); } >all.csv |
:
Bearbeitet durch Moderator
@ concat Mit nur einem Befehl, wie gewünscht, wird es nicht gehen. Aber Yalus Lösung ist doch toll. Magst Du von der Forderung nicht vielleicht abgehen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.