Um Ihnen beim Erlernen des Split-Befehls zu helfen, verwende ich eine relativ große Textdatei mit 17170 Zeilen und einer Größe von 1,4 MB. Sie können eine Kopie dieser Datei vom GitHub-Link herunterladen.
Beachten Sie, dass ich die Ausgabe in diesen Beispielen aufgrund der großen Dateigrößen nicht direkt anzeigen werde. Ich werde die Befehle ll und wc verwenden, um Dateiänderungen hervorzuheben.
Ich rate Ihnen, einen kurzen Blick auf den wc-Befehl zu werfen, um die Ausgabe der split-Befehlsbeispiele zu verstehen.
Beispiele für den Split-Befehl in Linux
Dies ist die Syntax des Split-Befehls:
split [options] filename [prefix]
Sehen wir uns an, wie man damit Dateien unter Linux aufteilt.
1. Dateien in mehrere Dateien aufteilen
Standardmäßig erstellt der Split-Befehl alle 1000 Zeilen neue Dateien. Wenn kein Präfix angegeben ist, wird „x“ verwendet. Die folgenden Buchstaben zählen die Dateien auf, daher kommt zuerst xaa, dann xab und so weiter.
Lassen Sie uns die Beispielprotokolldatei aufteilen:
split someLogFile.log
Wenn Sie den Befehl ls verwenden, können Sie mehrere neue Dateien in Ihrem Verzeichnis sehen.
[email protected]:~/Documents$ ls
someLogFile.log xab xad xaf xah xaj xal xan xap xar
xaa xac xae xag xai xak xam xao xaq
Sie können wc verwenden, um die Zeilenanzahl nach dem Teilen schnell zu überprüfen.
[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar
Denken Sie daran, dass wir früher gesehen haben, dass unsere ursprüngliche Datei 17.170 Zeilen hatte. Wir können also sehen, dass unser Programm wie erwartet ausgeführt wurde, indem 18 neue Dateien erstellt wurden. 17 davon sind mit jeweils 1000 Zeilen gefüllt, und die letzte hat die restlichen 170 Zeilen.
Eine andere Möglichkeit, wie wir demonstrieren können, was passiert, besteht darin, den Befehl mit der Option verbose auszuführen. Wenn Sie mit wortreich nicht vertraut sind, verpassen Sie etwas! Es bietet detailliertere Rückmeldungen darüber, was Ihr System tut, und kann mit vielen Befehlen verwendet werden.
split someLogFile.log --verbose
Sie können sehen, was mit Ihrem Befehl auf dem Display los ist:
creating file 'xaa'
creating file 'xab'
creating file 'xac'
creating file 'xad'
creating file 'xae'
creating file 'xaf'
creating file 'xag'
creating file 'xah'
creating file 'xai'
creating file 'xaj'
creating file 'xak'
creating file 'xal'
creating file 'xam'
creating file 'xan'
creating file 'xao'
creating file 'xap'
creating file 'xaq'
creating file 'xar'
2. Dateien in mehrere Dateien mit bestimmten Zeilennummern aufteilen
Ich verstehe, dass es Ihnen vielleicht nicht gefällt, dass Dateien in Dateien mit 1000 Zeilen aufgeteilt werden. Sie können dieses Verhalten mit -l
ändern Option.
Wenn dies hinzugefügt wird, können Sie nun angeben, wie viele Zeilen Sie in jeder der neuen Dateien haben möchten.
split someLogFile.log -l 500
Wie Sie sich denken können, haben die geteilten Dateien jetzt jeweils 500 Zeilen, mit Ausnahme der letzten.
[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi
Jetzt haben Sie viel mehr Dateien, aber mit jeweils halb so vielen Zeilen.
3. Teilen Sie die Dateien in n Dateien auf
Das -n
Option macht das Aufteilen in eine bestimmte Anzahl von Stücken oder Stücken einfach. Sie können die Anzahl der gewünschten Dateien zuweisen, indem Sie nach -n einen ganzzahligen Wert hinzufügen.
split someLogFile.log -n 15
Jetzt können Sie sehen, dass es 15 neue Dateien gibt.
[email protected]:~/Documents$ ls
someLogFile.log xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao
4. Split-Dateien mit benutzerdefiniertem Namenspräfix
Was ist, wenn Sie Split verwenden, aber den ursprünglichen Namen meiner Datei beibehalten oder einen neuen Namen erstellen möchten, anstatt „x“ zu verwenden?
Sie erinnern sich vielleicht, dass Sie das Präfix als Teil der am Anfang des Artikels beschriebenen Syntax gesehen haben. Sie können Ihren eigenen benutzerdefinierten Dateinamen nach der Quelldatei schreiben.
split someLogFile.log someSeparatedLogFiles.log_
Hier sind die Split-Dateien, deren Namen mit dem angegebenen Präfix beginnen.
[email protected]:~/Documents$ ls
someLogFile.log someSeparatedLogFiles.log_aj
someSeparatedLogFiles.log_aa someSeparatedLogFiles.log_ak
someSeparatedLogFiles.log_ab someSeparatedLogFiles.log_al
someSeparatedLogFiles.log_ac someSeparatedLogFiles.log_am
someSeparatedLogFiles.log_ad someSeparatedLogFiles.log_an
someSeparatedLogFiles.log_ae someSeparatedLogFiles.log_ao
someSeparatedLogFiles.log_af someSeparatedLogFiles.log_ap
someSeparatedLogFiles.log_ag someSeparatedLogFiles.log_aq
someSeparatedLogFiles.log_ah someSeparatedLogFiles.log_ar
someSeparatedLogFiles.log_ai
5. Suffixlänge aufteilen und angeben
Split verfügt über eine Standard-Suffixlänge von 2 [aa, ab usw.]. Dies ändert sich automatisch, wenn die Anzahl der Dateien zunimmt, aber wenn Sie es manuell ändern möchten, ist das auch möglich. Nehmen wir also an, Sie möchten, dass unsere Dateien so etwas wie someSeparatedLogFiles.log_aaaab.
heißen
Wie kannst du das tun? Die Option -a
ermöglicht es uns, die Länge des Suffixes anzugeben.
split someLogFile.log someSeparatedLogFiles.log_ -a 5
Und hier sind die aufgeteilten Dateien:
[email protected]:~/Documents$ ls
someLogFile.log someSeparatedLogFiles.log_aaaae someSeparatedLogFiles.log_aaaaj someSeparatedLogFiles.log_aaaao
someSeparatedLogFiles.log_aaaaa someSeparatedLogFiles.log_aaaaf someSeparatedLogFiles.log_aaaak someSeparatedLogFiles.log_aaaap
someSeparatedLogFiles.log_aaaab someSeparatedLogFiles.log_aaaag someSeparatedLogFiles.log_aaaal someSeparatedLogFiles.log_aaaaq
someSeparatedLogFiles.log_aaaac someSeparatedLogFiles.log_aaaah someSeparatedLogFiles.log_aaaam someSeparatedLogFiles.log_aaaar
someSeparatedLogFiles.log_aaaad someSeparatedLogFiles.log_aaaai someSeparatedLogFiles.log_aaaan
6. Split mit numerischem Ordnungssuffix
Bis zu diesem Punkt haben Sie Ihre Dateien mit verschiedenen Buchstabenkombinationen getrennt gesehen. Ich persönlich finde es viel einfacher, Dateien anhand von Nummern zu unterscheiden.
Lassen Sie uns die Suffixlänge aus dem vorherigen Beispiel beibehalten, aber ändern Sie die alphabetische Organisation in numerisch mit der Option -d
.
split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d
Jetzt haben Sie also geteilte Dateien mit numerischen Zeichen.
[email protected]:~/Documents$ ls
someLogFile.log someSeparatedLogFiles.log_00004 someSeparatedLogFiles.log_00009 someSeparatedLogFiles.log_00014
someSeparatedLogFiles.log_00000 someSeparatedLogFiles.log_00005 someSeparatedLogFiles.log_00010 someSeparatedLogFiles.log_00015
someSeparatedLogFiles.log_00001 someSeparatedLogFiles.log_00006 someSeparatedLogFiles.log_00011 someSeparatedLogFiles.log_00016
someSeparatedLogFiles.log_00002 someSeparatedLogFiles.log_00007 someSeparatedLogFiles.log_00012 someSeparatedLogFiles.log_00017
someSeparatedLogFiles.log_00003 someSeparatedLogFiles.log_00008 someSeparatedLogFiles.log_00013
7. Hex-Suffixe an geteilte Dateien anhängen
Eine weitere Option für die Suffix-Erstellung ist die Verwendung des integrierten Hex-Suffixes, das geordnete Buchstaben und Zahlen abwechselt.
Für dieses Beispiel werde ich einige Dinge kombinieren, die ich Ihnen bereits gezeigt habe. Ich werde die Datei mit meinem eigenen Präfix aufteilen. Aus Gründen der Lesbarkeit habe ich einen Unterstrich gewählt.
Ich habe den -x
verwendet Option zum Erstellen eines Hex-Suffixes. Dann teilte ich unsere Datei in 50 Teile auf und gab dem Suffix eine Länge von 6.
split someLogFile.log _ -x -n50 -a6
Und hier ist das Ergebnis des obigen Befehls:
[email protected]:~/Documents$ ls
_000000 _000003 _000006 _000009 _00000c _00000f _000012 _000015 _000018 _00001b _00001e _000021 _000024 _000027 _00002a _00002d _000030
_000001 _000004 _000007 _00000a _00000d _000010 _000013 _000016 _000019 _00001c _00001f _000022 _000025 _000028 _00002b _00002e _000031
_000002 _000005 _000008 _00000b _00000e _000011 _000014 _000017 _00001a _00001d _000020 _000023 _000026 _000029 _00002c _00002f someLogFile.log
8. Dateien in mehrere Dateien bestimmter Größe aufteilen
Es ist auch möglich, die Dateigröße zu verwenden, um Dateien aufzuteilen. Vielleicht müssen Sie eine große Datei so effizient wie möglich über ein Netzwerk mit begrenzter Größe senden. Sie können die genaue Größe für Ihre Anforderungen angeben.
Die Syntax kann ein wenig knifflig werden, wenn wir weitere Optionen hinzufügen. Also werde ich erklären, wie das -b
Befehl funktioniert, bevor das Beispiel gezeigt wird.
Wenn Sie Dateien einer bestimmten Größe erstellen möchten, verwenden Sie den -b
Möglichkeit. Sie können dann n schreiben K[B], n M[B], n G[B] wobei n ist der Wert Ihrer Dateigröße und K [1024] ist -kibi, M ist -mebi, G ist -gibi und so weiter. KB [1000] ist Kilo, MB – Mega usw.
Es mag so aussehen, als wäre viel los, aber es ist nicht so komplex, wenn Sie es aufschlüsseln. Sie haben die Quelldatei, unser Präfix für den Zieldateinamen, ein numerisches Suffix und die Trennung nach Dateigröße von 128 KB angegeben.
split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB
Hier sind die aufgeteilten Dateien:
[email protected]:~/Documents$ ls
someLogFile.log someSeparatedLogFiles.log_02 someSeparatedLogFiles.log_05 someSeparatedLogFiles.log_08
someSeparatedLogFiles.log_00 someSeparatedLogFiles.log_03 someSeparatedLogFiles.log_06 someSeparatedLogFiles.log_09
someSeparatedLogFiles.log_01 someSeparatedLogFiles.log_04 someSeparatedLogFiles.log_07 someSeparatedLogFiles.log_10
Sie können das Ergebnis mit dem ‚wc‘-Befehl überprüfen.
[email protected]:~/Documents$ wc someSeparatedLogFiles.log_0*
1605 4959 128000 someSeparatedLogFiles.log_00
1605 4969 128000 someSeparatedLogFiles.log_01
1605 4953 128000 someSeparatedLogFiles.log_02
1605 4976 128000 someSeparatedLogFiles.log_03
1605 4955 128000 someSeparatedLogFiles.log_04
1605 4975 128000 someSeparatedLogFiles.log_05
1605 4966 128000 someSeparatedLogFiles.log_06
1605 4964 128000 someSeparatedLogFiles.log_07
1605 4968 128000 someSeparatedLogFiles.log_08
1605 4959 128000 someSeparatedLogFiles.log_09
16050 49644 1280000 total
9. Teilen Sie Dateien in mehrere Dateien mit der Größe „Höchstens“ n auf mit
Wenn Sie Dateien in ungefähr die gleiche Größe aufteilen, aber die Zeilenstruktur beibehalten möchten, ist dies möglicherweise die beste Wahl für Sie. Mit -C
, können Sie eine maximale Größe angeben. Dann teilt das Programm die Dateien automatisch nach vollständigen Zeilen auf.
split someLogFile.log someNewLogFiles.log_ -d -C 1MB
Sie können in der Ausgabe sehen, dass die erste geteilte Datei fast 1 MB groß ist, während sich der Rest der Datei in der zweiten Datei befindet.
[email protected]:~/Documents$ ll
total 2772
drwxr-xr-x 2 chris chris 81920 Jul 24 22:01 ./
drwxr-xr-x 19 chris chris 4096 Jul 23 22:23 ../
-rw-r--r-- 1 chris chris 1369273 Jul 20 17:52 someLogFile.log
-rw-r--r-- 1 chris chris 999997 Jul 24 22:01 someNewLogFiles.log_00
-rw-r--r-- 1 chris chris 369276 Jul 24 22:01 someNewLogFiles.log_01
Bonus-Tipp:Geteilte Dateien wieder zusammenfügen
Dies ist kein geteilter Befehl, aber er könnte für neue Benutzer hilfreich sein.
[email protected]:~/Documents$ ls
xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar
Sie können einen anderen Befehl verwenden, um diese Dateien wieder zusammenzuführen und eine Kopie unseres vollständigen Dokuments zu erstellen. Der cat-Befehl ist die Abkürzung für concatenate, was nur ein schickes Wort ist, das „Elemente zusammenfügen“ bedeutet. Da alle Dateien mit dem Buchstaben „x“ beginnen, wendet das Sternchen den Befehl auf alle Dateien an, die mit diesem Buchstaben beginnen.
[email protected]:~/Documents$ cat x* > recoveredLogFile.log
[email protected]:~/Documents$ ls
recoveredLogFile.log xab xad xaf xah xaj xal xan xap xar
xaa xac xae xag xai xak xam xao xaq
Wie Sie sehen können, hat unsere neu erstellte Datei die gleiche Größe wie unser Original.
wc -l recreatedLogFile.log
17170 recreatedLogFile.log
Unsere Formatierung (einschließlich der Anzahl der Zeilen) wird in der erstellten Datei beibehalten.
Wenn Sie neu bei Linux sind, hoffe ich, dass dieses Tutorial Ihnen geholfen hat, den Split-Befehl zu verstehen. Wenn Sie erfahrener sind, teilen Sie uns in den Kommentaren unten mit, wie Sie Split am liebsten verwenden!
Ob Anfänger oder erfahrener Mensch, ich würde vorschlagen, dass Sie sich auch den csplit-Befehl ansehen, der eine etwas bessere Möglichkeit zum Aufteilen von Dateien in der Linux-Befehlszeile darstellt.