Untuk membantu Anda mempelajari tentang perintah split, saya menggunakan file teks yang relatif besar berisi 17170 baris dan berukuran 1,4 MB. Anda dapat mengunduh salinan file ini dari tautan GitHub.
Perhatikan bahwa saya tidak akan langsung menampilkan output dalam contoh ini karena ukuran file yang besar. Saya akan menggunakan perintah ll dan wc untuk menyorot perubahan file.
Saya menyarankan Anda untuk melihat sekilas perintah wc untuk memahami output dari contoh perintah split.
Contoh perintah Split di Linux
Ini adalah sintaks dari perintah Split:
split [options] filename [prefix]
Mari kita lihat bagaimana menggunakannya untuk membagi file di Linux.
1. Pisahkan file menjadi beberapa file
Secara default, perintah split membuat file baru untuk setiap 1000 baris. Jika tidak ada awalan yang ditentukan, itu akan menggunakan 'x'. Huruf-huruf yang mengikuti menyebutkan file-file itu karena xaa didahulukan, lalu xab, dan seterusnya.
Mari kita pisahkan contoh file log:
split someLogFile.log
Jika Anda menggunakan perintah ls, Anda dapat melihat beberapa file baru di direktori Anda.
[email protected]:~/Documents$ ls
someLogFile.log xab xad xaf xah xaj xal xan xap xar
xaa xac xae xag xai xak xam xao xaq
Anda dapat menggunakan wc untuk memeriksa jumlah baris dengan cepat setelah pemisahan.
[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar
Ingat dari sebelumnya bahwa kami melihat file awal kami memiliki 17.170 baris. Jadi kita bisa melihat program kita sudah berjalan seperti yang diharapkan dengan membuat 18 file baru. 17 dari mereka diisi dengan 1000 baris masing-masing, dan yang terakhir memiliki sisa 170 baris.
Cara lain untuk menunjukkan apa yang terjadi adalah dengan menjalankan perintah dengan opsi verbose. Jika Anda tidak terbiasa dengan verbose, Anda ketinggalan! Ini memberikan umpan balik yang lebih mendetail tentang apa yang dilakukan sistem Anda dan tersedia untuk digunakan dengan banyak perintah.
split someLogFile.log --verbose
Anda dapat melihat apa yang terjadi dengan perintah Anda di layar:
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. Pisahkan file menjadi beberapa file dengan nomor baris tertentu
Saya mengerti bahwa Anda mungkin tidak menyukai file yang dipecah menjadi file 1000 baris. Anda dapat mengubah perilaku ini dengan -l
pilihan.
Saat ini ditambahkan, Anda sekarang dapat menentukan berapa banyak baris yang Anda inginkan di setiap file baru.
split someLogFile.log -l 500
Seperti yang bisa Anda tebak, sekarang file split masing-masing memiliki 500 baris, kecuali yang terakhir.
[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi
Sekarang Anda memiliki lebih banyak file, tetapi dengan setengah baris di setiap file.
3. Pisahkan file menjadi n jumlah file
-n
opsi membuat pemisahan menjadi sejumlah potongan atau potongan yang ditentukan menjadi mudah. Anda dapat menetapkan berapa banyak file yang Anda inginkan dengan menambahkan nilai integer setelah -n.
split someLogFile.log -n 15
Sekarang Anda dapat melihat bahwa ada 15 file baru.
[email protected]:~/Documents$ ls
someLogFile.log xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao
4. Pisahkan file dengan awalan nama khusus
Bagaimana jika Anda ingin menggunakan split tetapi tetap menggunakan nama asli file saya atau membuat nama baru sekaligus daripada menggunakan 'x'?
Anda mungkin ingat melihat awalan sebagai bagian dari sintaks yang dijelaskan di awal artikel. Anda dapat menulis nama file kustom Anda sendiri setelah file sumber.
split someLogFile.log someSeparatedLogFiles.log_
Berikut adalah file split dengan nama yang dimulai dengan awalan yang diberikan.
[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. Pisahkan dan Tentukan Panjang Sufiks
Split memiliki panjang akhiran default 2 [aa, ab, dll]. Ini akan berubah secara otomatis seiring bertambahnya jumlah file, tetapi jika Anda ingin mengubahnya secara manual, itu juga mungkin. Jadi katakanlah Anda ingin file kami diberi nama seperti someSeparatedLogFiles.log_aaaab.
Bagaimana Anda bisa melakukan ini? Opsi -a
memungkinkan kita untuk menentukan panjang sufiks.
split someLogFile.log someSeparatedLogFiles.log_ -a 5
Dan inilah file splitnya:
[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. Pisahkan dengan akhiran urutan numerik
Sampai saat ini, Anda telah melihat file Anda dipisahkan menggunakan kombinasi huruf yang berbeda. Secara pribadi, saya merasa lebih mudah untuk membedakan file menggunakan angka.
Mari kita pertahankan panjang sufiks dari contoh sebelumnya, tetapi ubah organisasi abjad menjadi numerik dengan opsi -d
.
split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d
Jadi sekarang Anda akan membagi file dengan cukup numerik.
[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. Tambahkan sufiks hex untuk membagi file
Pilihan lain untuk pembuatan sufiks adalah menggunakan sufiks heksa bawaan yang menggantikan huruf dan angka berurutan.
Untuk contoh ini, saya akan menggabungkan beberapa hal yang telah saya tunjukkan kepada Anda. Saya akan membagi file menggunakan awalan saya sendiri. Saya memilih garis bawah untuk tujuan keterbacaan.
Saya menggunakan -x
pilihan untuk membuat akhiran hex. Kemudian saya membagi file kami menjadi 50 bagian dan memberikan akhiran dengan panjang 6.
split someLogFile.log _ -x -n50 -a6
Dan inilah hasil dari perintah di atas:
[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. Pisahkan file menjadi beberapa file dengan ukuran tertentu
Anda juga dapat menggunakan ukuran file untuk memecah file secara terpisah. Mungkin Anda perlu mengirim file besar melalui jaringan yang dibatasi ukuran seefisien mungkin. Anda dapat menentukan ukuran yang tepat untuk kebutuhan Anda.
Sintaksnya bisa menjadi sedikit rumit saat kami terus menambahkan opsi. Jadi, saya akan menjelaskan bagaimana -b
perintah berfungsi sebelum menampilkan contoh.
Saat Anda ingin membuat file dengan ukuran tertentu, gunakan -b
pilihan. Anda kemudian dapat menulis n K[B], n M[B], n G[B] dimana n adalah nilai ukuran file Anda dan K [1024] adalah -kibi, M adalah -mebi, G adalah -gibi, dan seterusnya. KB [1000] adalah kilo, MB – mega dll.
Ini mungkin terlihat seperti ada banyak hal yang terjadi, tetapi tidak sekompleks itu saat Anda menguraikannya. Anda telah menentukan file sumber, awalan nama file tujuan kami, sufiks numerik, dan pemisahan menurut ukuran file 128kB.
split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB
Berikut adalah file split:
[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
Anda dapat memverifikasi hasilnya dengan perintah '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. Pisahkan file menjadi beberapa file dengan ukuran 'Paling Banyak' n dengan
Jika Anda ingin membagi file menjadi ukuran yang kira-kira sama, tetapi mempertahankan struktur garis, ini mungkin pilihan terbaik untuk Anda. Dengan -C
, Anda dapat menentukan ukuran maksimum. Kemudian program akan secara otomatis membagi file berdasarkan baris yang lengkap.
split someLogFile.log someNewLogFiles.log_ -d -C 1MB
Anda dapat melihat di output bahwa file split pertama berukuran hampir 1 MB sedangkan sisa file ada di file kedua.
[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
Kiat Bonus:Menggabungkan kembali file yang terpisah
Ini bukan perintah terpisah, tetapi mungkin berguna bagi pengguna baru.
[email protected]:~/Documents$ ls
xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar
Anda dapat menggunakan perintah lain untuk menggabungkan kembali file-file itu dan membuat replika dokumen lengkap kami. Perintah cat adalah kependekan dari concatenate yang hanya merupakan kata mewah yang berarti “bergabung item bersama-sama”. Karena semua file dimulai dengan huruf 'x', tanda bintang akan menerapkan perintah ke file apa pun yang dimulai dengan huruf itu.
[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
Seperti yang Anda lihat, file yang kami buat ulang berukuran sama dengan aslinya.
wc -l recreatedLogFile.log
17170 recreatedLogFile.log
Pemformatan kami (termasuk jumlah baris) dipertahankan dalam file yang dibuat.
Jika Anda baru mengenal Linux, saya harap tutorial ini membantu Anda memahami perintah split. Jika Anda lebih berpengalaman, beri tahu kami cara favorit Anda menggunakan split di komentar di bawah!
Pemula atau berpengalaman, saya sarankan Anda juga melihat perintah csplit yang merupakan cara yang sedikit lebih baik untuk membagi file di baris perintah Linux.