Pengenalan | Linux mempunyai beberapa program utiliti untuk membelah fail. Jadi mengapa anda mahu membelah fail? Satu kes penggunaan adalah untuk memisahkan fail besar kepada saiz yang lebih kecil supaya ia boleh dimuatkan pada medium storan yang lebih kecil, seperti batang USB. Memindahkan fail melalui USB juga merupakan helah yang baik apabila anda terperangkap dengan FAT32 (saiz fail maksimum ialah 4GB) dan fail anda lebih besar daripada itu. Kes penggunaan lain ialah mempercepatkan pemindahan fail rangkaian, kerana pemindahan selari bagi fail kecil biasanya lebih pantas. |
Kami akan belajar cara menggunakan csplit, split dan cat untuk menyusun semula fail sebelum menggabungkannya bersama-sama. Operasi ini berguna untuk sebarang jenis fail: teks, gambar, fail audio, fail imej ISO, dsb.
Pisah fail menggunakan csplitcsplit ialah salah satu arahan kecil yang menyeronokkan yang sentiasa bersama anda dan anda tidak boleh hidup tanpanya sebaik sahaja anda mula menggunakannya. csplit membahagikan satu fail kepada berbilang fail. Contoh ini menunjukkan penggunaan paling mudah, yang membahagikan fail foo.txt kepada tiga fail, menggunakan nombor baris 17 dan 33 sebagai titik pisah:
$ csplit foo.txt 17 33 2591 3889 2359
csplit mencipta tiga fail baharu dalam direktori semasa dan mencetak saiz fail baharu dalam bait. Secara lalai, setiap fail baharu dinamakan xx_nn:
$ ls xx00 xx01 xx02
Anda boleh melihat sepuluh baris pertama setiap fail baharu menggunakan arahan kepala:
$ 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
Bagaimana jika anda ingin membahagikan fail kepada berbilang fail yang mengandungi bilangan baris yang sama? Anda boleh menentukan bilangan baris dan kemudian meletakkan bilangan ulangan dalam pendakap kerinting. Contoh ini mengulangi pemisahan 4 kali dan membuang bakinya ke dalam fail terakhir:
$ csplit foo.txt 5 {4} 57 1488 249 1866 3798
Anda boleh menggunakan kad bebas asterisk untuk memberitahu csplit supaya mengulangi pemisahan sebanyak mungkin. Ini kedengaran keren, tetapi mungkin gagal jika fail tidak boleh dibahagikan sama rata (terjemahan LCTT: versi csplit yang lebih rendah tidak menyokong parameter ini):
$ csplit foo.txt 10 {*} 1545 2115 1848 1901 csplit: '10': line number out of range on repetition 4 1430
Tingkah laku lalai adalah untuk memadam fail output apabila ralat berlaku. Anda boleh menyelesaikan masalah ini dengan pilihan -k, yang tidak akan memadamkan fail output apabila terdapat ralat. Tingkah laku lain ialah setiap kali anda menjalankan csplit, ia akan menimpa fail yang dibuat sebelum ini, jadi anda perlu menyimpannya secara berasingan dengan nama fail baharu. Gunakan --prefix= _prefix_ untuk menetapkan awalan fail yang berbeza:
$ 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
Pilihan -n boleh digunakan untuk menukar bilangan digit yang digunakan kepada nombor fail (lalai ialah 2 digit):
$ csplit -n 3 --prefix=mine foo.txt 5 {4} 57 1488 249 1866 1381 3798 $ ls mine000 mine001 mine002 mine003 mine004 mine005
"c" dalam csplit bermaksud konteks. Ini bermakna anda boleh memisahkan fail berdasarkan mana-mana corak padanan atau ungkapan biasa yang bijak. Contoh di bawah membahagikan fail kepada dua bahagian. Fail pertama berakhir pada baris yang mengandungi kejadian pertama "fie", dan fail kedua bermula pada baris yang mengandungi "fie".
$ csplit foo.txt /fie/
Pisah fail setiap kali "fie" muncul:
$ csplit foo.txt /fie/ {*}
Pisah fail pada lima kejadian pertama "fie":
$ csplit foo.txt /fie/ {5}
Salin hanya jika kandungan bermula dengan baris yang mengandungi "fie", dan tinggalkan apa-apa yang terdahulu:
$ csplit myfile %fie%
split serupa dengan csplit. Ia membahagikan fail kepada saiz tertentu, yang bagus apabila anda membahagikan fail besar kepada fail multimedia kecil atau menggunakan pemindahan rangkaian. Saiz lalai ialah 1000 baris:
$ split foo.mv $ ls -hl 266K Aug 21 16:58 xaa 267K Aug 21 16:58 xab 315K Aug 21 16:58 xac [...]
Ia dibahagikan kepada saiz yang sama, tetapi anda boleh menentukan mana-mana saiz yang anda mahukan. Dalam contoh ini ialah 20M bait:
$ split -b 20M foo.mv
Singkatan unit dimensi ialah K, M, G, T, P, E, Z, Y (kuasa 1024) atau KB, MB, GB, dsb. (kuasa 1000).
Pilih awalan dan akhiran anda sendiri untuk nama fail:
$ 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 mengawal kedudukan digit nombor. --numeric-suffixes menetapkan nilai permulaan untuk penomboran. Awalan lalai ialah x, anda juga boleh menetapkan awalan yang berbeza dengan memasukkannya selepas nama fail.
Gabungkan fail berpecahAnda mungkin mahu menyusun semula fail anda pada satu ketika. Perintah kucing yang biasa digunakan digunakan di sini:
$ cat SB0* > foo2.txt
Kad bebas asterisk dalam contoh akan sepadan dengan semua fail bermula dengan SB0, yang mungkin tidak memberikan hasil yang anda inginkan. Anda boleh menggunakan kad bebas tanda soal untuk padanan yang lebih tepat, menggunakan satu tanda soal bagi setiap aksara:
$ cat SB0?????? > foo2.txt
Seperti biasa, sila rujuk manual dan halaman maklumat yang berkaitan untuk pilihan arahan yang lengkap.
Atas ialah kandungan terperinci Panduan Pengendalian Fail Linux: Petua untuk Memisahkan dan Menyusun Semula Fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!