Wie teile ich größere Dateien in kleinere Teile auf?


189

Ich habe eine große Datei (8 GB zum Beispiel). Wie kann ich es in mehrere Teile aufteilen, sagen wir 3 gleiche Teile, und wie kann ich sie später integrieren?



Sind Sie sicher "das scheint zu sein" ?. Es ist genau dasselbe. Außer hier gibt es jetzt einen Bonus von "Weitere Beispiele und Alternativen".
Luis Alvarado

Es kann hilfreich sein, wenn Sie mehr darüber sagen, warum Sie es aufteilen möchten und ob Sie möchten, dass es nur in Byte-Teilzeichenfolgen aufgeteilt wird, oder ob Sie bereit sind, diese in eine Art Fehlerprüfung oder -kennzeichnung einzuwickeln. Wenn dies auf kleineren Medien oder für Netzwerkübertragungen erfolgen soll, würde ich etwas wie par2 betrachten .
Poolie


ein Liner für gleich geteilt durch N: (1.) geteilt durch Linien geteilt - Linien $ (($ (wc -l <$ {your_filename}) / $ {N})) $ {your_filename} (2.) geteilt durch Bytes split --bytes $ (($ (wc -c <$ {your_filename}) / $ {N})) $ {your_filename}
Trevor Boyd Smith

Antworten:


272

Es gibt verschiedene Möglichkeiten, dies zu erreichen. Beginnen wir mit den Grundlegenden.

Verwenden der Befehle split und cat :

Sagen wir, ich habe ein Bild und es ist zu groß (10 MB). Ich mache nur:

split --bytes=1M /path/to/image/image.jpg /path/to/image/prefixForNewImagePieces

und dann, um es zusammenzusetzen, benutze ich cat:

cat prefixFiles* > newimage.jpg

Zum Beispiel:

Angenommen, ich befinde mich in dem Ordner, in dem sich das Bild befindet:

split --bytes=1M myimage.jpg new

Befindet sich das Bild in einem Verzeichnis namens images, können Sie dies auch tun:

split --bytes=1M images/myimage.jpg new

Befindet sich das Bild im Verzeichnis / home / cyrex / images, können Sie dies tun:

split --bytes=1M /home/cyrex/images/myimage.jpg new

(In allen Fällen darüber geteilt wird myimage.jpgneu in 1MB Stücken und Präfix die Namen der Stücke mit dem Wort. So sie aussehen würden newaa, newab, newac, newad...)

Wenn Sie eine Textdatei aufteilen und sie nach Zeilen aufteilen möchten, können Sie dies tun:

split -l 1000 book.txt new

Dadurch wird die Textdatei in Ausgabedateien mit jeweils 1000 Zeilen aufgeteilt. Dies ist eine weitere Möglichkeit, eine Datei zu teilen. Sie wird hauptsächlich für Textdateien wie Protokolle, SQL-Dumps, CSV-Dateien usw. verwendet.

Dann füge ich sie zusammen

cat new* > newimage.jpg

Das ist eine Möglichkeit. Sie können sogar die Größe der geteilten Teile ändern. Ändern Sie einfach den Teil, --bytes=1Mder --bytes=1Kfür 1 Kilobyte oder 1G für Giga oder eine andere Zahl wie --bytes=4Kfür 4KB Stücke sagt.

Mit Nautilus

Ein anderer Weg ist die Komprimierungsoption in der Benutzeroberfläche von Nautilus. Sie haben die Möglichkeit, die zu komprimierenden Dateien in kleinere Megabyte zu unterteilen. Es ist einfach und leicht.

Ein weiterer Weg ist die Verwendung von 7z

Angenommen, Sie haben ein ISO-Image mit dem Namen, ubuntu.isodann könnten Sie dies tun:

7z a -v5m -mx0 ubuntu.7z ubuntu.iso

Dadurch werden Dateien mit einer Größe von 5 MB von der erstellt ubuntu.iso. Das -v5mist die Volumengröße, so dass Sie sie in 10, 12, 1, 3 und auch in k für Kilobyte usw. ändern können. Der -mx0Schalter weist 7-Zip an, keine Komprimierung zu verwenden, dh nur Daten in Teile aufzuteilen.

Zum extrahieren einfach machen

7z x ubuntu.7z.001

Auf diese Weise extrahieren Sie die erste Datei und 7z beginnt, die folgenden Dateien der Reihe nach zu extrahieren. Sie können auch tun

7z e ubuntu.7z.001

was hier den gleichen Effekt hat.


2
Ich habe rar nicht eingeschlossen, da es noch nicht Open Source ist (soweit ich weiß), und Tar nicht hinzugefügt, da ich nach einfachen Möglichkeiten gesucht habe, die Aufteilung vorzunehmen.
Luis Alvarado

Füge auch gzip hinzu
7zip

Soweit ich weiß, hat Gzip (wie tar) keine einfache Möglichkeit, die komprimierte Datei zu teilen. In allen Fällen habe ich gesehen, dass sie den Split-Befehl verwenden, um die Komprimierungsdatei zu "teilen". Es wäre also kein Befehl, sondern eine Gruppe von Befehlen, um einen einzigen Zweck zu erreichen, der mit einem einzigen wie split oder 7z erreicht werden kann. Für die Installation von 7Zip (das ist das p7zip von p7zip-full package) hat es mich nie nach iirc gefragt;).
Luis Alvarado

Aufteilen von Textdateien hinzugefügt. Das habe ich vergessen und heute passierte es einfach, dass ich ein paar CSV-Dateien aufteilen musste. Dies gilt für Speicherauszüge, für die eine bestimmte Anzahl von Zeilen erforderlich ist.
Luis Alvarado

10

Mit split -bder entsprechenden Nummer erhalten Sie drei Stück.

Nummer könnte sein:

size=$(wc -c <"file name")
one_third=$((size/3+1))

Verwenden Sie zum Zusammenbauen cat

cat "file name"* > "file name"

Handbuchseiten helfen dabei, die Details zu ergänzen.


1
Sie können auch verwenden split --number, um splitdie Anzahl der Dateien für Sie berechnen zu lassen : askubuntu.com/questions/54579/…
Ciro Santilli

4

HJSplit

Ist ein beliebtes Freeware-Programm zum Teilen und erneuten Kombinieren von Dateien. Das Programm ist unter Windows, Linux und einer Vielzahl anderer Plattformen verfügbar.

HJSplit für Linux ist ein Freeware-Dateisplitter für Linux mit vollständiger grafischer Benutzeroberfläche. HJSplit unterstützt Dateigrößen von über 100 Gigabyte, Split, Join / Recombine, MD5-Prüfsummen, Dateivergleich, "Ausführen ohne Installation" und das Programm ist vollständig portierbar.

HJSplit für Linux muss nicht installiert werden und ist von keinen speziellen Bibliotheken abhängig. Extrahieren Sie einfach das Archiv hjsplitlx.tar.gz in ein Verzeichnis Ihrer Wahl und starten Sie das Programm über den Linux-Dateimanager oder ein Terminalfenster. Möglicherweise müssen Sie die Dateiberechtigungen des Programms auf "ausführbar" einstellen.

Bildbeschreibung hier eingeben


1
Muss ich sagen, dass die Windows-Datei auch unter Linux funktioniert?
Uri Herrera

2
Es gibt verschiedene Möglichkeiten, eine Datei zu teilen / zusammenzufügen, bevor Sie zu einem Programm wie diesem wechseln müssen. Ich benutze eher die leistungsstarken Optionen, die Linux bietet, und zum Teilen / Zusammenführen von Dateien gibt es einige ziemlich schnelle und sichere Möglichkeiten.
Luis Alvarado

3
Es ist sicher, schnell und plattformübergreifend und beinhaltet LINUX. Es ist keine reine WINDOWS-Anwendung, die zufällig auch unter Linux ausgeführt wird ...
Uri Herrera

2
Ich benutze HJSplit, es ist großartig und einfach. Sie müssen keine Befehle und Parameternamen eingeben, wenn Sie die Parameterwerte nur in Textfelder eingeben können.
Matthew Read

2
Und ein kostenloser Download macht es noch schlimmer, weil? und muss ich sagen, dass NIRGENDWO IM OP ER KOSTENLOSE SOFTWARE ANFORDERT (was das ist, es ist kostenlos) und worauf Sie sich beziehen, heißt OFFEN, es gibt einen Unterschied, den Sie kennen ?.
Uri Herrera


3

HOZ - Hacha Open Zource v1.65 - http://hoz.sourceforge.net/

Bildbeschreibung hier eingeben

Vom Entwickler:

OZ ist das, was Sie einen "Dateisplitter" nennen würden. Das Dateiformat ist das gleiche wie bei der Software 'Hacha', einem in Spanien und Lateinamerika bekannten Splitter. HOZ ist eine quelloffene und portable C-Implementierung eines 'Hacha'-kompatiblen Splitters.

HOZ ist kleiner und schneller als 'Hacha'.

Übrigens habe ich in "Zource" ein "Z" anstelle eines "S" verwendet, weil "hoz" auf Spanisch "Sichel" bedeutet, und weil "hacha" das spanische Wort für "Axt" ist ...

Nach der Installation können Sie die Hoz-Benutzeroberfläche verwenden, indem Sie ghozein Terminal löschen. Die Bedienung ist so einfach, dass keine Erklärung erforderlich ist. Weitere Informationen finden Sie auf der Website des Entwicklers.

Viel Glück!


0

Holzfäller

Ein kostenloses Dienstprogramm zum Teilen und Zusammenführen von Dateien, das in Java entwickelt wurde. Es ist eine kleine Anwendung, mit der ein Benutzer jeden Dateityp in kleinere Größen in KB, MB oder GB aufteilen kann.

Es ist sowohl für Linux als auch für Windows verfügbar.

WoodCutter bietet drei Möglichkeiten, um die ursprünglichen Dateien wieder zusammenzuführen. WoodCutter erstellt eine Zusammenführungsdatei, die von der WoodCutter-Anwendung verarbeitet werden kann, um alle Dateien wieder zusammenzuführen. Wenn auf dem Empfänger von aufgeteilten Dateien WoodCutter nicht installiert ist, kann auch die Originaldatei abgerufen werden, da WoodCutter auch eine Batch-Datei und eine Shell-Skriptdatei erstellt, um die Dateien wieder zusammenzuführen. Die Batch-Datei wird auf der Windows-Plattform verwendet und das Shell-Skript wird auf Linux-Plattformen verwendet.

http://java-puzzle.blogspot.com/2009/07/woodcutter.html


2
Die Lizenz ist "Freeware". Ich denke, ein Tool für freie Software, das in den Repos enthalten ist, ist eine bessere Lösung.
Broam

0

split --number

Dies ist eine gute Option, um N Dateien mit derselben Größe zu generieren, mit Ausnahme der letzten, die aufgrund der Unteilbarkeit möglicherweise größer ist. Z.B:

printf '0123456789' > f.txt
split -d --number 2 f.txt f.txt.part.
tail f.txt.part.*

gibt:

==> f.txt.part.00 <==
01234
==> f.txt.part.01 <==
56789

und:

split -d --number 3 f.txt f.txt.part.
tail f.txt.part.*

gibt:

==> f.txt.part.00 <==
012
==> f.txt.part.01 <==
345
==> f.txt.part.02 <==
6789

Im Vergleich zur -bexpliziten Größenberechnung, die unter https://askubuntu.com/a/54584/52975 erwähnt wurde , ist die letzte Datei möglicherweise fast doppelt so groß wie die vorherige, was manchmal ein Nachteil dieser Option ist. Dies ist jedoch um ein Vielfaches praktischer, da Sie die Größenberechnung nicht selbst durchführen müssen.

Die gleiche Anzahl von Zeilen wurde gefragt unter: https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-fileses-with- Equal-number-of-lines

Getestet in split2.28, Ubuntu 18.04.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.