您好,登錄后才能下訂單哦!
這篇文章主要介紹Linux下如何使用split對(duì)文件進(jìn)行切分,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
split可以將一個(gè)大文件分割成多個(gè)小文件,有時(shí)候需要將問(wèn)卷分割成更小的片段,比如提高可讀性,生成日志。
首先,先使用 dd 命令來(lái)生成一個(gè) 700MB 文件來(lái)作為我們的拆分對(duì)象:
[root@roclinux ~]$ dd if=/dev/zero bs=1024 count=700000 of=king_of_ring.avi 700000+0 records in700000+0 records out 716800000 bytes (717 MB) copied, 12.9189 s, 55.5 MB/s [root@roclinux ~]$ ls -l king_of_ring.avi -rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi
美國(guó)大片的文件大小是 700MB,而我手邊僅有的兩個(gè)優(yōu)盤(pán),都是 512MB 大小的。我打算把文件以 400MB 作為一個(gè)拆分單位,來(lái)進(jìn)行拆分。這里使用到了 split 的-b
選項(xiàng),來(lái)指定每個(gè)拆分文件的大?。?/p>
[root@roclinux ~]$ split -b 400M king_of_ring.avi [root@roclinux ~]$ ls -l total 1400008 -rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi -rw-r--r-- 1 root root 419430400 Apr 12 13:04 xaa -rw-r--r-- 1 root root 297369600 Apr 12 13:04 xab
看!分身完畢!咦,怎么多出了 xaa 和 xab 兩個(gè)文件,這么奇怪的名字?
是的,你沒(méi)看錯(cuò),在沒(méi)有明確指定拆分后文件的命名方式的情況下,split 會(huì)默認(rèn)采用 x 字符作為文件前綴,采用類(lèi)似 aa、ab、ac 的字符串依次作為文件后綴。于是,就出現(xiàn)了我們上面看到的 xaa、xab 了。
從文件大小來(lái)看,如我們所愿,電影文件的確被切割成了一個(gè) 400MB 的文件、一個(gè) 300MB 的文件,終于可以裝到兩個(gè)優(yōu)盤(pán)里了。
知道了拆分命令后,我們來(lái)一起學(xué)習(xí)一下 split 的命令格式和常用選項(xiàng)。
split 的作用很好描述,就是將文件按照一定規(guī)則進(jìn)行拆分。一般情況下,我們可以按照文件大小來(lái)進(jìn)行拆分,如果是文本文件的話,還可以按照行數(shù)來(lái)進(jìn)行拆分,默認(rèn)是 1000 行作為一個(gè)拆分單位。
默認(rèn)情況下,分割后的文件的名稱(chēng)會(huì)以 x 作為前綴,以 aa、ab、ac 這樣的雙字母格式作為后綴,形成 xaa、xab 這樣的名稱(chēng)格式。
我們來(lái)一起看看 split 的命令格式:
split [-b ][-C ][-][-l ][要切割的文件][輸出文件名前綴][-a ]
最常用的選項(xiàng),都在這里了:
完成了美國(guó)大片的拆分,我趕赴朋友家,打開(kāi)他的電腦,優(yōu)盤(pán)插上,使用 cat 命令將拆分文件 xaa 和 xab 合并成一個(gè)文件,可以看出合并后的文件和源文件的大小是一致的:
[root@roclinux ~]$ cat xaa xab > king_of_ring_merge.avi [root@roclinux ~]$ ls -l total 2100012 -rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi -rw-r--r-- 1 root root 716800000 Apr 12 13:07 king_of_ring_merge.avi -rw-r--r-- 1 root root 419430400 Apr 12 13:04 xaa -rw-r--r-- 1 root root 297369600 Apr 12 13:04 xab
對(duì)了,如果是在 Windows 下的話,我們要先運(yùn)行 cmd,然后用 copy 命令來(lái)進(jìn)行文件的合并:
copy /b xaa + xab king_of_ring.avi
格式上和 Linux 有些區(qū)別,但原理是一樣的。
上面例子中,我們沒(méi)有指定拆分文件的名稱(chēng)前綴,結(jié)果拆分后的文件名都是 aa、ab 這樣的名稱(chēng),這樣的名稱(chēng)既不達(dá)意也不美觀。
下面的例子,我們嘗試以 king_of_ring_part_ 作為拆分后文件的名稱(chēng)前綴:
#我們指定了king_of_ring_part_前綴[root@roclinux ~]$ split -b 400m king_of_ring.avi king_of_ring_part_#可以看到, 文件名的可讀性提高了很多[root@roclinux ~]$ ls -l king* -rw-r--r-- 1 root root 716800000 Feb 25 18:29 king_of_ring.avi -rw-r--r-- 1 root root 419430400 Feb 25 19:24 king_of_ring_part_aa -rw-r--r-- 1 root root 297369600 Feb 25 19:24 king_of_ring_part_ab
文件名的可讀性是不是提高了不少,從文件名稱(chēng)就可以看出來(lái)是美國(guó)大片的拆分文件啦。
如果大家看不慣以 aa、ab 這種字母作為文件后綴,我們還可以通過(guò)-d選項(xiàng)來(lái)指定數(shù)字形式的文件后綴:
#使用了-d選項(xiàng)[root@roclinux ~]$ split -b 400m -d king_of_ring.avi king_of_ring_part_#后綴從原來(lái)的aa、ab變成了00、01[root@roclinux ~]$ ls -l king* -rw-r--r-- 1 root root 716800000 Feb 25 18:29 king_of_ring.avi -rw-r--r-- 1 root root 419430400 Feb 25 19:24 king_of_ring_part_00 -rw-r--r-- 1 root root 297369600 Feb 25 19:24 king_of_ring_part_01
對(duì)于中國(guó)人來(lái)說(shuō),數(shù)字形式的后綴,增加了文件名稱(chēng)的可讀性。
前面我們講的是按照文件大?。ㄈ?400MB)進(jìn)行文件拆分的方法,但是并非所有情況都適合于用文件大小作為拆分單元。比如,我們希望把 /etc/passwd 文件按照一個(gè)文件 10 行記錄的方式進(jìn)行拆分,又該怎么操作呢?
#使用-N來(lái)指定拆分的行數(shù),本例中為-10[root@roclinux ~]$ split -d -10 /etc/passwd my_passwd_#可以看到拆分成功[root@roclinux ~]$ wc -l my_passwd_* 10 my_passwd_00 10 my_passwd_01 5 my_passwd_02 25 total
需要注意的是,在通過(guò)網(wǎng)絡(luò)來(lái)傳輸大文件,或者在設(shè)備之間復(fù)制大文件的時(shí)候,可能會(huì)出現(xiàn)傳輸前后數(shù)據(jù)不一致的情況。
使用 split 來(lái)拆分大文件僅僅是故事的開(kāi)始,操作完畢后化零為整、完璧歸趙才是完美的結(jié)局。因此需要在合并文件后進(jìn)行文件的完整性校驗(yàn),推薦使用 md5sum 來(lái)計(jì)算和比對(duì)前后兩個(gè)大文件的 md5 值。
#對(duì)原先的文件計(jì)算md5值[root@roclinux ~]$ md5sum king_of_ring.avi eacff27bf2db99c7301383b7d8c1c07c king_of_ring.avi#對(duì)合并后的文件計(jì)算md5值, 并與原值進(jìn)行比較[root@roclinux ~]$ md5sum king_of_ring_merge.avi eacff27bf2db99c7301383b7d8c1c07c king_of_ring_merge.avi
以上是“Linux下如何使用split對(duì)文件進(jìn)行切分”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。