《LINUX實操:在 Linux 中分割和重組文件》要點:
本文介紹了LINUX實操:在 Linux 中分割和重組文件,希望對您有用。如果有疑問,可以聯系我們。
異常有用的 csplit
命令可以將單個文件分割成多個文件.Carla Schroder 解釋說.
Linux 有幾個用于分割文件的工具程序.那么你為什么要分割文件呢?一個用例是將大文件分割成更小的尺寸,以便它適用于比擬小的存儲介質,比如 U 盤.當您遇到 FAT32(最大文件大小為 4GB),且您的文件大于此時,通過 U 盤傳輸文件也是一個很好的技巧.另一個用例是加速網絡文件傳輸,因為小文件的并行傳輸通常更快.
我們將學習如何使用 csplit
,split
和 cat
來重新整理文件,然后再將文件歸并在一起.這些操作在任何文件類型下都有用:文本、圖片、音頻文件、ISO 鏡像文件等.
csplit
?是這些有趣的小命令中的一個,它永遠伴你左右,一旦開始用它就離不開了.csplit
?將單個文件分割成多個文件.這個示例演示了最簡單的使用辦法,它將文件 foo.txt 分為三個文件,以行號 17 和 33 作為分割點:
csplit
在當前目錄下創立了三個新文件,并以字節為單位打印出新文件的大小.默認情況下,每個新文件名為 xx_nn
:
$ ls
xx00
xx01
xx02
您可以使用 head
敕令查看每個新文件的前十行:
$ head xx*
==> xx00 <==
FooFile
by CarlaSchroder
Foo text
Foo subheading
More foo text
==> xx01 <==
Foo text
Foo subheading
More foo text
==> xx02 <==
Foo text
Foo subheading
More foo text
如果要將文件分割成包括相同行數的多個文件怎么辦?可以指定行數,然后將重復次數放在在花括號中.此示例重復分割 4 次,并將剩下的轉儲到最后一個文件中:
$ csplit foo.txt 5{4}
57
1488
249
1866
3798
您可以使用星號通配符來告訴 csplit
盡可能多地重復分割.這聽起來很酷,但是如果文件不克不及等分,則可能會失敗(LCTT 譯注:低版本的 csplit
不支持此參數):
$ csplit foo.txt 10{*}
1545
2115
1848
1901
csplit:'10': line number out of range on repetition 4
1430
默認的行為是刪除發生錯誤時的輸出文件.你可以用 -k
選項來辦理這個問題,當有錯誤時,它就不會刪除輸出文件.另一個行為是每次運行 csplit
時,它將覆蓋之前創建的文件,所以你需要使用新的文件名來分別保存它們.使用 --prefix= _prefix_
來設置一個不同的文件前綴:
$ 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
選項 -n
可用于轉變對文件進行編號的數字位數(默認是 2 位):
$ csplit -n 3--prefix=mine foo.txt 5{4}
57
1488
249
1866
1381
3798
$ ls
mine000
mine001
mine002
mine003
mine004
mine005
csplit
中的 “c” 是上下文(context)的意思.這意味著你可以根據任意匹配的方式或者巧妙的正則表達式來分割文件.下面的例子將文件分為兩部分.第一個文件在包括第一次出現 “fie” 的前一行處結束,第二個文件則以包括 “fie” 的行開頭.
$ csplit foo.txt /fie/
在每次呈現 “fie” 時分割文件:
$ csplit foo.txt /fie/{*}
在 “fie” 前五次呈現的地方分割文件:
$ csplit foo.txt /fie/{5}
僅當內容以包括 “fie” 的行開始時才復制,并且省略前面的所有內容:
$ csplit myfile %fie%
?
split
與 csplit
類似.它將文件分割成特定的大小,當您將大文件分割成小的多媒體文件或者使用網絡傳送時,這就非常棒了.默認的大小為 1000 行:
$ split foo.mv
$ ls-hl
266KAug2116:58 xaa
267KAug2116:58 xab
315KAug2116:58 xac
[...]
它們分割出來的年夜小相似,但你可以指定任何你想要的年夜小.這個例子中是 20M 字節:
$ split-b 20M foo.mv
尺寸單元縮寫為 K,M,G,T,P,E,Z,Y(1024 的冪)或者 KB,MB,GB 等等(1000 的冪).
為文件名選擇你本身的前綴和后綴:
$ split-a 3--numeric-suffixes=9--additional-suffix=mine foo.mv SB
240KAug2117:44 SB009mine
214KAug2117:44 SB010mine
220KAug2117:44 SB011mine
-a
選項控制編號的數字位置.--numeric-suffixes
設置編號的開始值.默認前綴為 x
,你也可以通過在文件名后輸入它來設置一個分歧的前綴.
?
你可能想在某個時候重組你的文件.常用的 cat
命令就用在這里:
$ cat SB0*> foo2.txt
示例中的星號通配符將匹配到所有以 SB0 開頭的文件,這可能不會得到您想要的成果.您可以使用問號通配符進行更精確的匹配,每個字符使用一個問號:
$ cat SB0??????> foo2.txt
和往常一樣,請查閱相關的手冊和信息頁面以獲取完整的敕令選項.
via: https://www.linux.com/learn/intro-to-linux/2017/8/splitting-and-re-assembling-files-linux
作者:CARLA SCHRODER 譯者:firmianay 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
本文永遠更新鏈接地址:
維易PHP培訓學院每天發布《LINUX實操:在 Linux 中分割和重組文件》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8856.html