亚洲va中文字幕无码毛片,亚洲成a人片77777kkkk,五十路丰满中年熟女中出,无码人妻精品一区二区,天堂在线中文

幫助與文檔

當(dāng)前位置: 主頁(yè) > 系統(tǒng)相關(guān) > 正文

在 Linux 中分割和重組文件

時(shí)間:2024/5/12 13:36:52   來(lái)源:米安網(wǎng)絡(luò)   作者:云主機(jī)配置專家   點(diǎn)擊:255次

非常有用的csplit命令可以將單個(gè)文件分割成多個(gè)文件。Carla Schroder 解釋說(shuō)。

Linux 有幾個(gè)用于分割文件的工具程序。那么你為什么要分割文件呢?一個(gè)用例是將大文件分割成更小的尺寸,以便它適用于比較小的存儲(chǔ)介質(zhì),比如 U 盤。當(dāng)您遇到 FAT32(最大文件大小為 4GB),且您的文件大于此時(shí),通過(guò) U 盤傳輸文件也是一個(gè)很好的技巧。另一個(gè)用例是加速網(wǎng)絡(luò)文件傳輸,因?yàn)樾∥募牟⑿袀鬏斖ǔ8臁?

我們將學(xué)習(xí)如何使用csplit,split和cat來(lái)重新整理文件,然后再將文件合并在一起。這些操作在任何文件類型下都有用:文本、圖片、音頻文件、ISO 鏡像文件等。

使用 csplit 分割文件

csplit是這些有趣的小命令中的一個(gè),它永遠(yuǎn)伴你左右,一旦開始用它就離不開了。csplit將單個(gè)文件分割成多個(gè)文件。這個(gè)示例演示了最簡(jiǎn)單的使用方法,它將文件 foo.txt 分為三個(gè)文件,以行號(hào) 17 和 33 作為分割點(diǎn):

$ csplit foo.txt 1733

2591

3889

2359

csplit在當(dāng)前目錄下創(chuàng)建了三個(gè)新文件,并以字節(jié)為單位打印出新文件的大小。默認(rèn)情況下,每個(gè)新文件名為xx_nn:

$ ls

xx00

xx01

xx02

您可以使用head命令查看每個(gè)新文件的前十行:

$ 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

如果要將文件分割成包含相同行數(shù)的多個(gè)文件怎么辦?可以指定行數(shù),然后將重復(fù)次數(shù)放在在花括號(hào)中。此示例重復(fù)分割 4 次,并將剩下的轉(zhuǎn)儲(chǔ)到最后一個(gè)文件中:

$ csplit foo.txt 5{4}

57

1488

249

1866

3798

您可以使用星號(hào)通配符來(lái)告訴csplit盡可能多地重復(fù)分割。這聽起來(lái)很酷,但是如果文件不能等分,則可能會(huì)失。↙CTT 譯注:低版本的csplit不支持此參數(shù)):

$ csplit foo.txt 10{*}

1545

2115

1848

1901

csplit:'10': line number out of range on repetition 4

1430

默認(rèn)的行為是刪除發(fā)生錯(cuò)誤時(shí)的輸出文件。你可以用-k選項(xiàng)來(lái)解決這個(gè)問(wèn)題,當(dāng)有錯(cuò)誤時(shí),它就不會(huì)刪除輸出文件。另一個(gè)行為是每次運(yùn)行csplit時(shí),它將覆蓋之前創(chuàng)建的文件,所以你需要使用新的文件名來(lái)分別保存它們。使用--prefix= _prefix_來(lái)設(shè)置一個(gè)不同的文件前綴:

$ 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

選項(xiàng)-n可用于改變對(duì)文件進(jìn)行編號(hào)的數(shù)字位數(shù)(默認(rè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)的意思。這意味著你可以根據(jù)任意匹配的方式或者巧妙的正則表達(dá)式來(lái)分割文件。下面的例子將文件分為兩部分。第一個(gè)文件在包含第一次出現(xiàn) “fie” 的前一行處結(jié)束,第二個(gè)文件則以包含 “fie” 的行開頭。

$ csplit foo.txt /fie/

在每次出現(xiàn) “fie” 時(shí)分割文件:

$ csplit foo.txt /fie/{*}

在 “fie” 前五次出現(xiàn)的地方分割文件:

$ csplit foo.txt /fie/{5}

僅當(dāng)內(nèi)容以包含 “fie” 的行開始時(shí)才復(fù)制,并且省略前面的所有內(nèi)容:

$ csplit myfile %fie%

將文件分割成不同大小

split與csplit類似。它將文件分割成特定的大小,當(dāng)您將大文件分割成小的多媒體文件或者使用網(wǎng)絡(luò)傳送時(shí),這就非常棒了。默認(rèn)的大小為 1000 行:

$ split foo.mv

$ ls-hl

266KAug2116:58 xaa

267KAug2116:58 xab

315KAug2116:58 xac

[...]

它們分割出來(lái)的大小相似,但你可以指定任何你想要的大小。這個(gè)例子中是 20M 字節(jié):

$ 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選項(xiàng)控制編號(hào)的數(shù)字位置。--numeric-suffixes設(shè)置編號(hào)的開始值。默認(rèn)前綴為x,你也可以通過(guò)在文件名后輸入它來(lái)設(shè)置一個(gè)不同的前綴。

將分割后的文件合并

你可能想在某個(gè)時(shí)候重組你的文件。常用的cat命令就用在這里:

$ cat SB0*> foo2.txt

示例中的星號(hào)通配符將匹配到所有以 SB0 開頭的文件,這可能不會(huì)得到您想要的結(jié)果。您可以使用問(wèn)號(hào)通配符進(jìn)行更精確的匹配,每個(gè)字符使用一個(gè)問(wèn)號(hào):

$ cat SB0??????> foo2.txt

和往常一樣,請(qǐng)查閱相關(guān)的手冊(cè)和信息頁(yè)面以獲取完整的命令選項(xiàng)。

版權(quán)保護(hù): 本文「在 Linux 中分割和重組文件」由 云主機(jī)配置專家 原創(chuàng),轉(zhuǎn)載請(qǐng)保留鏈接: http://www.iqcg.cn/docs/system/1048.html

聯(lián)系客服

0312-5535754

微信公眾號(hào)