Abych vám pomohl dozvědět se o příkazu split, používám relativně velký textový soubor obsahující 17170 řádků a velikost 1,4 MB. Kopii tohoto souboru si můžete stáhnout z odkazu GitHub.
Všimněte si, že v těchto příkladech nebudu přímo zobrazovat výstup kvůli velké velikosti souborů. Ke zvýraznění změn souborů použiji příkazy ll a wc.
Doporučuji vám, abyste se rychle podívali na příkaz wc, abyste porozuměli výstupu příkladů příkazů rozdělení.
Příklady příkazu Split v Linuxu
Toto je syntaxe příkazu Split:
split [options] filename [prefix]
Podívejme se, jak jej použít k rozdělení souborů v Linuxu.
1. Rozdělit soubory do více souborů
Ve výchozím nastavení příkaz split vytváří nové soubory pro každých 1000 řádků. Pokud není zadán žádný prefix, použije se „x“. Následující písmena vyjmenovávají soubory, proto je na prvním místě xaa, potom xab atd.
Rozdělme ukázkový soubor protokolu:
split someLogFile.log
Pokud použijete příkaz ls, můžete ve svém adresáři vidět několik nových souborů.
[email protected]:~/Documents$ ls
someLogFile.log xab xad xaf xah xaj xal xan xap xar
xaa xac xae xag xai xak xam xao xaq
Můžete použít wc k rychlé kontrole počtu řádků po rozdělení.
[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar
Pamatujte, že jsme viděli, že náš původní soubor měl 17 170 řádků. Takže můžeme vidět, že náš program udělal podle očekávání vytvořením 18 nových souborů. 17 z nich je vyplněno 1000 řádky a poslední má zbývajících 170 řádků.
Dalším způsobem, jak můžeme demonstrovat, co se děje, je spuštění příkazu s možností verbose. Pokud neznáte upovídanost, přicházíte o ně! Poskytuje podrobnější zpětnou vazbu o tom, co váš systém dělá, a je k dispozici pro použití s mnoha příkazy.
split someLogFile.log --verbose
Na displeji můžete vidět, co se děje s vaším příkazem:
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. Rozdělte soubory do více souborů s konkrétními čísly řádků
Chápu, že se vám nemusí líbit, že jsou soubory rozděleny do souborů po 1000 řádcích. Toto chování můžete změnit pomocí -l
možnost.
Když je toto přidáno, můžete nyní určit, kolik řádků chcete v každém z nových souborů.
split someLogFile.log -l 500
Jak můžete hádat, rozdělené soubory mají nyní každý 500 řádků, kromě posledního.
[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi
Nyní máte mnohem více souborů, ale s polovičním počtem řádků v každém.
3. Rozdělte soubory na n počet souborů
-n
tato možnost usnadňuje rozdělení na určený počet kusů nebo kousků. Můžete přiřadit, kolik souborů chcete, přidáním celočíselné hodnoty za -n.
split someLogFile.log -n 15
Nyní můžete vidět, že je zde 15 nových souborů.
[email protected]:~/Documents$ ls
someLogFile.log xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao
4. Rozdělit soubory s vlastní předponou názvu
Co když chcete použít split, ale zachovat původní název mého souboru nebo vytvořit úplně nový název namísto použití „x“?
Možná si pamatujete, že jste předponu viděli jako součást syntaxe popsané na začátku článku. Za zdrojový soubor můžete napsat vlastní název souboru.
split someLogFile.log someSeparatedLogFiles.log_
Zde jsou rozdělené soubory s názvy začínajícími danou předponou.
[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. Rozdělit a zadat délku přípony
Split má výchozí délku přípony 2 [aa, ab, atd.]. To se automaticky změní, když se počet souborů zvýší, ale pokud byste to chtěli změnit ručně, je to také možné. Řekněme tedy, že chcete, aby se naše soubory jmenovaly něco jako someSeparatedLogFiles.log_aaaab.
jak to můžeš udělat? Možnost -a
nám umožňuje určit délku přípony.
split someLogFile.log someSeparatedLogFiles.log_ -a 5
A zde jsou rozdělené soubory:
[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. Rozdělení s příponou číselného pořadí
Až do tohoto okamžiku jste viděli, že vaše soubory jsou odděleny pomocí různých kombinací písmen. Osobně mi přijde mnohem snazší rozlišovat soubory pomocí čísel.
Ponechme délku přípony z předchozího příkladu, ale změňme abecední uspořádání na numerické pomocí volby -d
.
split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d
Nyní tedy budete mít rozdělené soubory s číselnými údaji.
[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. K rozděleným souborům přidejte hexadecimální přípony
Další možností pro vytvoření přípony je použití vestavěné hexadecimální přípony, která střídá uspořádaná písmena a čísla.
Pro tento příklad zkombinuji několik věcí, které jsem vám již ukázal. Rozdělím soubor pomocí vlastní předpony. Zvolil jsem podtržítko pro účely čitelnosti.
Použil jsem -x
možnost vytvořit hexadecimální příponu. Potom jsem náš soubor rozdělil na 50 částí a přiřadil příponu délku 6.
split someLogFile.log _ -x -n50 -a6
A zde je výsledek výše uvedeného příkazu:
[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. Rozdělte soubory do více souborů určité velikosti
Je také možné použít velikost souboru k rozdělení souborů na rozdělení. Možná potřebujete odeslat velký soubor přes síť s omezenou velikostí co nejefektivněji. Můžete určit přesnou velikost pro vaše požadavky.
Syntaxe může být trochu složitější, protože pokračujeme v přidávání možností. Takže vysvětlím, jak -b
příkaz funguje před zobrazením příkladu.
Pokud chcete vytvořit soubory určité velikosti, použijte -b
volba. Poté můžete napsat n K[B], n M[B], n G[B] kde n je hodnota velikosti vašeho souboru a K [1024] je -kibi, M je -mebi, G je -gibi atd. KB [1000] je kilo, MB – mega atd.
Může to vypadat, že se toho děje hodně, ale není to tak složité, když to rozeberete. Zadali jste zdrojový soubor, naši předponu cílového souboru, číselnou příponu a separaci podle velikosti souboru 128 kB.
split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB
Zde jsou rozdělené soubory:
[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
Výsledek můžete ověřit pomocí příkazu „wc“.
[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. Rozdělte soubory do více souborů o velikosti „Nejvíce“ n s
Pokud jste chtěli rozdělit soubory na zhruba stejnou velikost, ale zachovat řádkovou strukturu, může to být pro vás nejlepší volba. S -C
, můžete zadat maximální velikost. Poté program automaticky rozdělí soubory na základě celých řádků.
split someLogFile.log someNewLogFiles.log_ -d -C 1MB
Ve výstupu můžete vidět, že první rozdělený soubor má velikost téměř 1 MB, zatímco zbytek souboru je ve druhém souboru.
[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
Bonusový tip:Opětovné spojení rozdělených souborů
Toto není rozdělený příkaz, ale může být užitečný pro nové uživatele.
[email protected]:~/Documents$ ls
xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar
K opětovnému spojení těchto souborů a vytvoření repliky našeho kompletního dokumentu můžete použít jiný příkaz. Příkaz cat je zkratka pro zřetězení, což je jen ozdobné slovo, které znamená „spojit položky dohromady“. Protože všechny soubory začínají písmenem „x“, hvězdička použije příkaz na všechny soubory, které tímto písmenem začínají.
[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
Jak můžete vidět, náš znovu vytvořený soubor má stejnou velikost jako náš původní.
wc -l recreatedLogFile.log
17170 recreatedLogFile.log
Naše formátování (včetně počtu řádků) je ve vytvořeném souboru zachováno.
Pokud s Linuxem začínáte, doufám, že vám tento návod pomohl pochopit příkaz split. Pokud jste zkušenější, řekněte nám svůj oblíbený způsob použití split v komentářích níže!
Začátečník nebo zkušený bych vám doporučil podívat se také na příkaz csplit, což je o něco lepší způsob rozdělování souborů v příkazovém řádku Linuxu.