一種常見的需求是,有一個比較大的文件,須要把它切割成比較小的幾個文件,在Linux系統中你就可使用Split命令了。Split命令能夠將一個大的文件按照文件大小或者行數切割成小文件。Split命令的使用方式以下:緩存
plit [-bl] file PREFIX 選項與參數: -b :後面可接欲分割成的文件大小,可加單位,例如 b, k, m 等; -l :以行數來進行分割。 PREFIX :表明前導符的意思,可做爲分割文件的前導文字。
範例一:個人 /etc/termcap 有七百多K,若想要分紅 300K 一個文件時?app
[root@www ~]# cd /tmp; split -b 300k /etc/termcap termcap [root@www tmp]# ll -k termcap* -rw-r--r-- 1 root root 300 Feb 7 16:39 termcapaa -rw-r--r-- 1 root root 300 Feb 7 16:39 termcapab -rw-r--r-- 1 root root 189 Feb 7 16:39 termcapac
如上所示,分割後的文件以 xxxaa, xxxab, xxxac 等方式來建立小文件的!
範例二:如何將上面的三個小文件合成一個文件,檔名爲 termcapbackspa
[root@www tmp]# cat termcap* >termcapback
使用cat命令,將數據流重定向就能夠了。
範例三:使用 ls -al / 輸出的信息中,每十行記錄成一個文件blog
[root@www tmp]# ls -al / | split -l 10 - lsroot [root@www tmp]# wc -l lsroot* 10 lsrootaa 10 lsrootab 6 lsrootac 26 total
注意:在管道命令當中,經常會使用到前一個命令的 stdout做爲此次的stdin , 某些命令須要用到文件名 (例如 tar) 來進行處理時,該stdin與stdout能夠利用減號 "-" 來替代, 舉例來講:it
[root@www ~]# tar -cvf - /home | tar -xvf -
注意在上面的例子使用到了'>','>'會將數據流傳送給文件或者設備,所以可使用>將命令輸出寫入到文件或者設備。固然寫入到設備後就沒法繼續利用這個數據流。若是須要繼續使用這個數據流可使用tee命令對流進行雙向重定向。tee命令的示意圖以下所示:ast
tee 會同時將數據流分送到文件去與屏幕 (screen);而輸出到屏幕的,其實就是 stdout ,能夠繼續處理。class
tee [-a] file 選項與參數: -a :以累加 (append) 的方式,將數據加入 file 當中!
具體使用以下所示:file
[root@www ~]# last | tee last.list | cut -d " " -f1 # 這個範例可讓咱們將 last 的輸出存一份到 last.list 文件中; [root@www ~]# ls -l /home | tee ~/homefile | more # 這個範例則是將 ls 的數據存一份到 ~/homefile ,同時屏幕也有輸出信息! [root@www ~]# ls -l / | tee -a ~/homefile | more # 要注意! tee 後接的文件會被覆蓋,若加上 -a 這個選項則能將信息累加。
tee 可讓 standard output 轉存一份到文件內並將一樣的數據繼續送到屏幕去處理! 這樣除了可讓咱們同時分析一份數據並記錄下來以外,還能夠做爲處理一份數據的中間緩存盤記錄之用!im