Linux split 和 cat詳解
名稱:split
使用許可權:所有使用者
使用方式:split [OPTION] [INPUT [PREFIX]
說明:
將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序為 PREFIXaa, PREFIXab...;PREFIX 預設值為 `x。若沒有 INPUT 檔或為 `-,則從標準輸入讀進資料。
匡兜?
-b, --bytes=SIZE
SIZE 值為每一輸出檔案的大小,單位為 byte。
-C, --line-bytes=SIZE
每一輸出檔中,單行的最大 byte 數。
-l, --lines=NUMBER
NUMBER 值為每一輸出檔的列數大小。
-NUMBER
與 -l NUMBER 相同。
--verbose
於每個輸出檔被開啟前,列印出偵錯資訊到標準錯誤輸出。
--help
顯示輔助資訊然後離開。
--version
列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。
範例:
PostgresSQL 大型資料庫備份與回存:
因 Postgres 允許表格大過你係統檔案的最大容量,所以要將表格 dump 到單一的檔案可能會有問題,使用 split進行檔案分割。
% pg_dump dbname | split -b 1m - filename.dump.
重新載入
% createdb dbname
% cat filename.dump.* | pgsql dbname
1、檔案的切分及結合工具;
可能我們遇到這種情況,有時檔案比較大,想上傳到 上,但由於 管理員為了安全 考慮,把上傳空間作了限制,比如只能上傳20M的檔案,如果我們檔案的體積在100M的,有時就是壓縮也不能滿足伺服器上傳的限制。這時我們就要考慮切分檔案了,把100M的檔案,切分成若干份,然後傳到伺服器上。切分後的每個檔案都是原檔案的組成部份。如果要獲得整個完整的檔案,我們就需要檔案的結合工具。
所以我們引入了檔案切分工具split和csplit,檔案的結合工具cat;
2、檔案的切分工具 split 和csplit;
split 是把一個檔案拆分為長度或體積相等的若干檔案的工具;
2.1 split 工具;
split 是把一個檔案拆分為長度或體積相等的若干檔案的工具;
2.11 語法格式;
split 把輸入的檔案拆分為若干體積或長度相等的檔案,輸入檔案保持不變,只是把結果拆分結果寫到outfileaa、outfileab ... ... 等檔案中。如果我們不指定outfile,被拆分後的檔案會寫到 xaa、xab ... ...。
引數
-b n[bkm] 以體積為單位的拆分,約定每拆分後每個檔案的大小 ,b代表512B,k代表1KB,m代表1MB。
-C bytes[bkm] 把bytes的最大值放入檔案,堅持增加完整的行;
- 從標準輸入讀取;
--help 幫助;
2.12 split例項應用;
例項一:比如我們想切分一個檔案 doc.txt,切分後,每兩行存為一個新檔案。
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
000000000
[root@localhost ~]# split -l 2 linuxdoc.txt linuxdocsp 注:切分linuxdoc.txt檔案,被切分後的檔名linuxdocsp開頭
[root@localhost ~]# ls linuxdocspa* 注:檢視切分後的所有檔案;
linuxdocspaa linuxdocspab linuxdocspac linuxdocspad linuxdocspae
[root@localhost ~]# more linuxdocspa* 注:檢視這些檔案的內容;是不是每個檔案都是兩行呢?
linuxdocspaa
::::::::::::::
111111111
222222222
::::::::::::::
linuxdocspab
::::::::::::::
333333333
444444444
::::::::::::::
linuxdocspac
::::::::::::::
555555555
666666666
::::::::::::::
linuxdocspad
::::::::::::::
777777777
888888888
::::::::::::::
linuxdocspae
::::::::::::::
999999999
000000000
例項二:以檔案體積為單位的切分;
-rw-r--r-- 1 root root 100 04-27 15:56 linuxdoc.txt
[root@localhost ~]# more linuxdoc.txt
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
000000000
[root@localhost ~]# split -b 30 linuxdoc.txt linuxdocwsp 如果指定切分體積大小後面沒有接單位,預設是B;
[root@localhost ~]# ls -lh linuxdocwspa*
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspaa
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspab
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspac
-rw-r--r-- 1 root root 10 04-27 16:10 linuxdocwspad
[root@localhost ~]# more linuxdocwspa*
::::::::::::::
linuxdocwspaa
::::::::::::::
111111111
222222222
333333333
::::::::::::::
linuxdocwspab
::::::::::::::
444444444
555555555
666666666
::::::::::::::
linuxdocwspac
::::::::::::::
777777777
888888888
999999999
::::::::::::::
linuxdocwspad
::::::::::::::
000000000
對於切分體積的說明:如果沒有指定單位,預設單位是B。還有其它的單位,比如b、k、m。看下面的例子;
-rw-r--r-- 1 root root 13K 04-27 16:17 moretool.txt 注:檔案大小為13K;
[root@localhost ~]#split -b 3k moretool.txt moretoolwsp 注: 切分後每個檔案大小為3K;
例項三:從標準輸入讀取的例項;
[root@localhost ~]# ls etcfilelista*
etcfilelistaa etcfilelistab etcfilelistac etcfilelistad etcfilelistae etcfilelistaf etcfilelistag
注:本指令的意思是用ls以長格式列出/etc目錄的檔案(不包括.file格式的檔案,也就是隱藏檔案),把輸入的內容傳遞給split,讓 split來切分每40行為存為一個檔案,檔名的開頭以etcfilelist開始。注意40後面的- ,表示從標準輸入讀取,在這裡就表示鍵盤輸入了,也就是讀取ls -lh /etc 指令的內容。然後split切分。
2.2 csplit 工具;
正在補充之中... ...
3、檔案的連線工具 cat;
cat 工具如果後面直接檔案檔名,就可以檢視檔案的內容。我們在《檔案內容檢視工具》中有說過。在《檔案內容檢視工具》一文中,我們也談過cat 連線檔案的功能;現在我們仍得把cat工具連線檔案的功能單列出來說一說。
3.1 把多個檔案合併到一個新的檔案中;
命令格式如下:
我們可以把file1、file2、file3 等多個檔案合併到一個檔案中,其中filen是在合併這些檔案的同時新建的檔案,而不是已存在的檔案;
123456
[root@localhost ~]# cat sir02.txt
56789
[root@localhost ~]# cat sir03.txt
09876
[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt
[root@localhost ~]# more sir04.txt
123456
56789
09876
3.2 把多個檔案合併追加到一個已存在的檔案中;
命令格式如下:
如果我們想把file1、file2、file3等多個檔案內容連線起來,並追加到一個已存在的檔案filen中,應該用追加的方法;
123456
[root@localhost ~]# cat sir01.txt
123456
[root@localhost ~]# cat sir02.txt
56789
[root@localhost ~]# cat sir03.txt
09876
[root@localhost ~]# cat sir05.txt
aaaaa
bbbbb
[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir05.txt
[root@localhost ~]# cat sir05.txt
aaaaa
bbbbb
123456
56789
09876
4、關於分拆檔案和連線檔案的安全 性;
比如我們把一個大的檔案分拆為多個小檔案時,肯定會考慮到,我們重新把一個一個小的分拆檔案連線起來,會不會能和原檔案保持一致 。這樣的疑問其實也是有道理的,因為這關係到一個檔案的完整性,如果真的合併不到一起,關係到檔案的完整性和安全性。這時就涉及到檔案的校驗工具。一般我們是透過MD5工具來校驗對比。在Linux也有這樣的工具md5sum。
-rw-r--r-- 1 root root 7.9M 04-27 20:35 myfile.img
[root@localhost ~]# split -b 4m myfile.img myfileSp 注:分拆為大小為4M的檔案;
[root@localhost ~]# ls -lh myfileSp* 注:列出分拆檔案,我們看到有兩個檔案;
-rw-r--r-- 1 root root 4.0M 04-27 20:37 myfileSpaa
-rw-r--r-- 1 root root 3.9M 04-27 20:37 myfileSpab
[root@localhost ~]# cat myfileSp* > newmyfile.img 注:我們嘗試合併檔案到一個新檔案中;
[root@localhost ~]# ls -lh newmyfile.img
-rw-r--r-- 1 root root 7.9M 04-27 20:38 newmyfile.img
[root@localhost ~]# md5sum newmyfile.img myfile.img 注:我們對比合並後檔案和原檔案的MD5值,如果M55值相同,就是完整的;
[root@localhost ~]# md5sum newmyfile.img myfile.img
7eb24d865a14fa3227633816800522c1 myfile.img
7eb24d865a14fa3227633816800522c1 newmyfile.img
上面是一個例項,把myfile.img檔案分拆為4M大小的檔案,然後再把兩個檔案連線起來,然後校驗是不是合併後的檔案和原檔案的MD5值是相同的,如果相同,證明分拆過程是安全的。
5、關於本文;
檔案的切分工具和結合工具只是介紹性的,用法也相對簡單。我們知道有這兩個工具就行了,用的時候查man和help就OK。沒有必要象我這樣大動干戈寫文件,弄的好像寫長篇小說似的。如果我真的能當作家,對我來說可是極大的榮耀~~~
6、後記;
關於目錄和檔案管理的文件寫了有一些了,我想為這些文件寫個歸類文件,這樣新手檢視就容易一點。另外感覺應該寫一下字元模式下的文字編輯工具的簡單用法,比如vi或nano之類的。這新手面對黑黑的螢幕就不會不知所措了~~~
come from: http://a280606790.iteye.com/blog/771723
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-742901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Cat, Fox and Maximum Array Split
- Linux檔案分割與合併:split&catLinux
- Linux - 檔案的分割(split)與合併(cat)Linux
- Linux-split命令使用詳解Linux
- linux split命令引數及用法詳解---linux分割檔案命令Linux
- Linux cat命令Linux
- Centos檔案切割利器_split命令及cat命令合併檔案CentOS
- linux之cat命令Linux
- Linux基礎命令—catLinux
- Linux基礎命令---catLinux
- Perl5 split 函式的使用詳細講解函式
- linux每日命令(11):cat命令Linux
- Linux中&&和&,|和||用法及區別詳解!Linux
- Linux基礎命令—splitLinux
- Linux基礎命令---splitLinux
- Linux split拆分檔案Linux
- Linux之cat的使用介紹Linux
- Linux 常用基本命令 cat grepLinux
- Linux(四):Linux的打包和壓縮詳解Linux
- Hbase split的三種方式和split的過程
- Linux Apache和Nginx網路模型詳解LinuxApacheNginx模型
- Linux Apache prefork和worker的原理詳解LinuxApache
- Linux cp命令和scp命令使用詳解Linux
- linux之cat,more,less,head,tailLinuxAI
- C#的String.Split 分割字串用法詳解的程式碼C#字串
- php中的chunk_split()和str_split()字串函式PHP字串函式
- linux下find,xargs命令詳解和例項Linux
- Linux : select()詳解 和 實現原理【轉】Linux
- 每天一個 Linux 命令(10):cat 命令Linux
- 使用 split 命令分割 Linux 檔案Linux
- linux下.tar.gz和.gz檔案解壓詳解Linux
- Linux top詳解Linux
- 詳解Linux InodeLinux
- Linux at命令詳解Linux
- linux管道詳解Linux
- linux——管道詳解Linux
- Linux lsof詳解Linux
- Linux init詳解Linux