cmd 文本文件分割_通过split命令分割大文件
場(chǎng)景
線上出了問題,我需要去查找log來定位問題,但是由于線上數(shù)據(jù)量龐大,這些log文件每過一個(gè)小時(shí)就會(huì)自動(dòng)回滾一次,盡管如此,有的log文件依然達(dá)到了五六g以上的大小。
對(duì)于這種巨大的log文件,常用的一些文本編輯器諸如EditPlus、Notepad++就不用說了,打開幾百m的文件都會(huì)很卡,上g的直接程序崩潰。雖然UltraEdit對(duì)于大文件的讀取會(huì)友好一些,但打開這種五六g的文件時(shí)也會(huì)陷入長時(shí)間的無響應(yīng)狀態(tài)。
后來我又得知了一個(gè)看log神器——glogg,打開五六g的大文件速度很快,但是有個(gè)問題,就是只能讀取文件,不能編輯文件。畢竟我不只是要查看log,有時(shí)候還要對(duì)這些有用的log信息進(jìn)行編輯。最后還是決定先把大文件分割成數(shù)個(gè)小文件,再用UltraEdit來查看這些文件。
使用split命令分割大文件
在Linux下,切割和合并文件可以使用split和cat命令來實(shí)現(xiàn)。
在Windows下,安裝Git Bash也可以使用split和cat命令。
分割文件的命令是split,通過輸入split --help可以查詢幫助信息。假設(shè)現(xiàn)在有個(gè)6GB大小的文件test.log,這里簡單介紹下幾種分割的方式:
按大小分割文件
split -b 1000000000 test.log
-b參數(shù)表示按字節(jié)大小進(jìn)行分割,在數(shù)字后邊要指定被分割的文件名。這里在輸入文件名時(shí)有個(gè)小技巧,可以直接把該文件拖動(dòng)到cmd窗口中,會(huì)自動(dòng)輸入該文件的具體目錄。這里的文件還可以使用通配符,比如split -b 1000000000 *。
這個(gè)命令表示按1000000000byte的大小進(jìn)行分割,近似于1GB,大概是953MB的大小。對(duì)于這個(gè)6GB大小的文件test.log,會(huì)被分割成6個(gè)小文件。這些小文件的命名是有規(guī)律的:xaa、xab、xac、xad、xae、xaf。如果你分割了非常多的小文件,當(dāng)文件名到了xyz之后,會(huì)變成xzaaa、xzaab、xzaac、xzaad……所以不用擔(dān)心小文件過多而導(dǎo)致文件重名什么的。
當(dāng)然,上邊的這種寫法不夠人性化,我們可以使用其他的單位來指定分割的大小:k、m。k表示KB,m表示MB。
split -b 100k test.log表示將test.log按照100KB的大小進(jìn)行分割。
split -b 100m test.log表示將test.log按照100MB的大小進(jìn)行分割。
按照所有行數(shù)加起來的最大字節(jié)數(shù)進(jìn)行分割
split -C 100k test.log
-C參數(shù)表示按照所有行數(shù)加起來的最大字節(jié)數(shù)進(jìn)行分割,同樣可以使用k或者m作為單位,其實(shí)效果和上邊的-b差不多,只是在切割時(shí)將盡量維持每行的完整性。
按照行數(shù)進(jìn)行分割
split -l 1000 test.log
split -1000 test.log
-l參數(shù)表示按照行數(shù)進(jìn)行分割,即一個(gè)小文件中最多有多少行,-l number可以縮寫成-number,上邊的命令表示按照1000行一個(gè)小文件進(jìn)行分割。
注意點(diǎn)
這三種分割的方式不能混合使用,如下:
split -l 3000 -C 100k *
會(huì)報(bào)錯(cuò)split: cannot split in more than one way。
總結(jié)
以上是生活随笔為你收集整理的cmd 文本文件分割_通过split命令分割大文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fork、vfork、wait、wait
- 下一篇: exec族函数、system函数、pop