天天學點Linux-切割命令split

  一種常見的需求是,有一個比較大的文件,須要把它切割成比較小的幾個文件,在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

相關文章
相關標籤/搜索