Einführung | Linux verfügt über mehrere Hilfsprogramme zum Aufteilen von Dateien. Warum möchten Sie die Datei teilen? Ein Anwendungsfall besteht darin, eine große Datei in kleinere Größen aufzuteilen, damit sie auf ein kleineres Speichermedium, beispielsweise einen USB-Stick, passt. Das Übertragen von Dateien über USB ist auch ein guter Trick, wenn Sie mit FAT32 nicht weiterkommen (maximale Dateigröße beträgt 4 GB) und Ihre Dateien größer sind. Ein weiterer Anwendungsfall ist die Beschleunigung von Netzwerkdateiübertragungen, da parallele Übertragungen kleiner Dateien im Allgemeinen schneller sind. |
Wir lernen, wie man mit csplit, split und cat Dateien neu anordnet, bevor man sie zusammenführt. Diese Vorgänge sind für jeden Dateityp nützlich: Text, Bilder, Audiodateien, ISO-Image-Dateien usw.
Dateien mit csplit teilencsplit ist einer dieser lustigen kleinen Befehle, die Sie immer dabei haben und ohne die Sie nicht mehr leben können, sobald Sie damit beginnen. csplit teilt eine einzelne Datei in mehrere Dateien auf. Dieses Beispiel zeigt die einfachste Verwendung, bei der die Datei foo.txt in drei Dateien aufgeteilt wird, wobei die Zeilennummern 17 und 33 als Teilungspunkte verwendet werden:
$ csplit foo.txt 17 33 2591 3889 2359
csplit erstellt drei neue Dateien im aktuellen Verzeichnis und gibt die Größe der neuen Dateien in Bytes aus. Standardmäßig erhält jede neue Datei den Namen xx_nn:
$ ls xx00 xx01 xx02
Sie können die ersten zehn Zeilen jeder neuen Datei mit dem Befehl head anzeigen:
$ head xx* ==> xx00 <== Foo File by Carla Schroder Foo text Foo subheading More foo text ==> xx01 <== Foo text Foo subheading More foo text ==> xx02 <== Foo text Foo subheading More foo text
Was ist, wenn Sie die Datei in mehrere Dateien mit der gleichen Anzahl an Zeilen aufteilen möchten? Sie können die Anzahl der Zeilen angeben und dann die Anzahl der Wiederholungen in geschweifte Klammern setzen. In diesem Beispiel wird die Aufteilung viermal wiederholt und der Rest wird in die letzte Datei verschoben:
$ csplit foo.txt 5 {4} 57 1488 249 1866 3798
Sie können den Sternchen-Platzhalter verwenden, um csplit anzuweisen, die Teilung so oft wie möglich zu wiederholen. Das klingt cool, kann aber fehlschlagen, wenn die Datei nicht gleichmäßig aufgeteilt werden kann (LCTT-Übersetzung: niedrigere Versionen von csplit unterstützen diesen Parameter nicht):
$ csplit foo.txt 10 {*} 1545 2115 1848 1901 csplit: '10': line number out of range on repetition 4 1430
Das Standardverhalten besteht darin, die Ausgabedatei zu löschen, wenn ein Fehler auftritt. Sie können dieses Problem mit der Option -k lösen, die die Ausgabedatei bei einem Fehler nicht löscht. Ein weiteres Verhalten besteht darin, dass jedes Mal, wenn Sie csplit ausführen, die zuvor erstellten Dateien überschrieben werden, sodass Sie sie separat mit neuen Dateinamen speichern müssen. Verwenden Sie --prefix= _prefix_, um ein anderes Dateipräfix festzulegen:
$ csplit -k --prefix=mine foo.txt 5 {*} 57 1488 249 1866 993 csplit: '5': line number out of range on repetition 9 437 $ ls mine00 mine01 mine02 mine03 mine04 mine05
Option -n kann verwendet werden, um die Anzahl der Ziffern zu ändern, die zum Nummerieren von Dateien verwendet werden (Standard sind 2 Ziffern):
$ csplit -n 3 --prefix=mine foo.txt 5 {4} 57 1488 249 1866 1381 3798 $ ls mine000 mine001 mine002 mine003 mine004 mine005
Das „c“ in csplit bedeutet Kontext. Das bedeutet, dass Sie Dateien basierend auf beliebigen passenden Mustern oder cleveren regulären Ausdrücken aufteilen können. Das folgende Beispiel teilt die Datei in zwei Teile. Die erste Datei endet in der Zeile, die das erste Vorkommen von „fie“ enthält, und die zweite Datei beginnt in der Zeile, die „fie“ enthält.
$ csplit foo.txt /fie/
Datei jedes Mal teilen, wenn „fie“ erscheint:
$ csplit foo.txt /fie/ {*}
Teilen Sie die Datei bei den ersten fünf Vorkommen von „fie“ auf:
$ csplit foo.txt /fie/ {5}
Kopieren Sie nur, wenn der Inhalt mit einer Zeile beginnt, die „fie“ enthält, und lassen Sie alles davor weg:
$ csplit myfile %fie%
split ähnelt csplit. Es teilt Dateien in bestimmte Größen auf, was großartig ist, wenn Sie große Dateien in kleine Multimediadateien aufteilen oder die Netzwerkübertragung verwenden. Die Standardgröße beträgt 1000 Zeilen:
$ split foo.mv $ ls -hl 266K Aug 21 16:58 xaa 267K Aug 21 16:58 xab 315K Aug 21 16:58 xac [...]
Sie sind in ähnliche Größen unterteilt, Sie können jedoch jede gewünschte Größe angeben. In diesem Beispiel sind es 20 MB:
$ split -b 20M foo.mv
Abkürzungen für Maßeinheiten sind K, M, G, T, P, E, Z, Y (Potenz 1024) oder KB, MB, GB usw. (Potenz 1000).
Wählen Sie Ihr eigenes Präfix und Suffix für Dateinamen:
$ split -a 3 --numeric-suffixes=9 --additional-suffix=mine foo.mv SB 240K Aug 21 17:44 SB009mine 214K Aug 21 17:44 SB010mine 220K Aug 21 17:44 SB011mine
-a steuert die Ziffernposition der Zahl. --numeric-suffixes legt den Startwert für die Nummerierung fest. Das Standardpräfix ist x. Sie können auch ein anderes Präfix festlegen, indem Sie es nach dem Dateinamen eingeben.
Geteilte Dateien zusammenführenMöglicherweise möchten Sie Ihre Dateien irgendwann neu organisieren. Hier wird der häufig verwendete Cat-Befehl verwendet:
$ cat SB0* > foo2.txt
Der Sternchen-Platzhalter im Beispiel stimmt mit allen Dateien überein, die mit SB0 beginnen, was möglicherweise nicht zu den gewünschten Ergebnissen führt. Für eine genauere Übereinstimmung können Sie den Fragezeichen-Platzhalter verwenden, indem Sie ein Fragezeichen pro Zeichen verwenden:
$ cat SB0?????? > foo2.txt
Für vollständige Befehlsoptionen konsultieren Sie bitte wie immer das entsprechende Handbuch und die Informationsseiten.
Das obige ist der detaillierte Inhalt vonLinux File Operation Guide: Tipps zum Teilen und Reorganisieren von Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!