Dateien in Linux schneiden?
Hallo,
ich will bei bestimmten großen Dateien in Linux einfach am Anfang oder Ende eine vorgegebene Größe (z.B. 250 MB) binär abschneiden und den Rest davon dann als Ergebnis lassen.
Im Terminal kann ich mit split ja große Dateien entweder auf vorgegebene Größe oder bestimmte Teildateienzahl splitten. Aber beides hilft hier ja nicht direkt weiter. Im Grunde will ich bei einer 3,5-GB-Datei zum Beispiel einfach sagen: Teil es in zwei Teile auf, der erste soll 250 MB haben und der zweite den Rest.
Geht das irgendwie? Die einzige Lösung, die ich momentan wüsste, wäre es eben in 250-MB-Parts zu splitten und (außer das erste) diese per cat wieder zusammenzufügen. Ist aber etwas umständlich und hat seine Nachteile. Gibt es da eine direkte Lösung oder muss ich das dann auf die oben genannte Methode per split/cat machen?
4 Antworten
KarlRanseierIII hat völlig recht, head und tail können so was. Die sind eben nicht nur dafür da eine bestimmte Anzahl an Textzeilen auszugeben.
einfach z.B. tail -c 1K Dateiname nutzen für die letzten 1024 byte. Oder so was wie +1K für alles ab dem 1024 Byte.
tail für das Ende einer Datei, head für den Anfang. head kann eben statt + -
Danke. Funktioniert soweit gut, außer mit tail -c +1K. Das übernimmt die Zeichen nicht 1:1, warum auch immer. Hab es mit ner Textdatei ausprobiert, da ist die Formatierung dann weg und zwischen jedem Zeichen ein Leerzeichen. Aber ist nicht so tragisch, geht ja im Grunde mit head auch.
Dafür gibt es eigentlich schon Freeware Tools wie z.b. Hjsplit für Linux oder g-split. Wahrscheinlich gibt es noch ein paar mehr.
Danke für die Antwort. War aber nicht genau das, was ich gesucht habe. Aber hilft mir sicher an anderer Stelle mal weiter.
man head
man tail
Wenn Du weißt ab welcher Position welche Menge an Daten, dann kannste auch den Klassiker nutzen:
man dd
Du könntest head benutzen, z.B.:
{
head --bytes=250M > erster_Teil
cat > zweiter_Teil
} < große_Datei