liuux/ Unix 文件管理命令(四) liuux/ Unix 文件管理命令(四)

liuux/ Unix 文件管理命令(四)


 cmp命令算法

  用於比較兩個文件是否有差別。ide

  當相互比較的兩個文件徹底同樣時,則該指令不會顯示任何信息。若發現有所差別,預設會標示出第一個不一樣之處的字符和列數編號。若不指定任何文件名稱或   是所給予的文件名爲"-",則cmp指令會從標準輸入設備讀取數據。函數

  語法

  cmp [-clsv][-i <字符數目>][--help][第一個文件][第二個文件]

  參數ui

· -c--print-chars  除了標明差別處的十進制字碼以外,一併顯示該字符所對應字符。spa

· -i<字符數目>--ignore-initial=<字符數目>  指定一個數目。orm

· -l--verbose  標示出全部不同的地方。ip

· -s--quiet--silent  不顯示錯誤信息。字符串

· -v--version  顯示版本信息。it

· --help  在線幫助。io

 實例

1).要肯定兩個文件是否相同,請輸入:

cmp prog.o.bak prog.o

這比較 prog.o.bak prog.o。若是文件相同,則不顯示消息。

2).若是文件不一樣,則顯示第一個不一樣的位置;例如:

prog.o.bak prog.o differ: char 4, line 1

    若是顯示消息 cmp: EOF on prog.o.bak,則 prog.o 的第一部分與 prog.o.bak 相同,但在 prog.o 中還有其餘數據。

   

diff命令

用於比較文件的差別。

diff以逐行的方式,比較文本文件的異同處。所是指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中子目錄。

  語法:

      diff [-abBcdefHilnNpPqrstTuvwy][-<行數>][-C <行數>][-D <巨集名稱>][-I <字符或字符串>][-S <文件>][-W <寬度>][-x <文件或目錄>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目錄1][文件或目錄2]

  參數

· -<行數>  指定要顯示多少行的文本。此參數必須與-c-u參數一併使用。

· -a--text  diff預設只會逐行比較文本文件。

· -b--ignore-space-change  不檢查空格字符的不一樣。

· -B--ignore-blank-lines  不檢查空白行。

· -c  顯示所有內文,並標出不一樣之處。

· -C<行數>--context<行數>  與執行"-c-<行數>"指令相同。

· -d--minimal  使用不一樣的演算法,以較小的單位來作比較。

· -D<巨集名稱>ifdef<巨集名稱>  此參數的輸出格式可用於前置處理器巨集。

· -e--ed  此參數的輸出格式可用於edscript文件。

· -f-forward-ed  輸出的格式相似edscript文件,但按照原來文件的順序來顯示不一樣處。

· -H--speed-large-files  比較大文件時,可加快速度。

· -l<字符或字符串>--ignore-matching-lines<字符或字符串>  若兩個文件在某幾行有所不一樣,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差別。

· -i--ignore-case  不檢查大小寫的不一樣。

· -l--paginate  將結果交由pr程序來分頁。

· -n--rcs  將比較結果以RCS的格式來顯示。

· -N--new-file  在比較目錄時,若文件A僅出如今某個目錄中,預設會顯示:

· Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。

· -p  若比較的文件爲C語言的程序碼文件時,顯示差別所在的函數名稱。

· -P--unidirectional-new-file  與-N相似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,纔會將這個文件與空白的文件作比較。

· -q--brief  僅顯示有無差別,不顯示詳細的信息。

· -r--recursive  比較子目錄中的文件。

· -s--report-identical-files  若沒有發現任何差別,仍然顯示信息。

· -S<文件>--starting-file<文件>  在比較目錄時,從指定的文件開始比較。

· -t--expand-tabs  在輸出時,將tab字符展開。

· -T--initial-tab  在每行前面加上tab字符以便對齊。

· -u,-U<列數>--unified=<列數>  以合併的方式來顯示文件內容的不一樣。

· -v--version  顯示版本信息。

· -w--ignore-all-space  忽略所有的空格字符。

· -W<寬度>--width<寬度>  在使用-y參數時,指定欄寬。

· -x<文件名或目錄>--exclude<文件名或目錄>  不比較選項中所指定的文件或目錄。

· -X<文件>--exclude-from<文件>  您能夠將文件或目錄類型存成文本文件,而後在=<文件>中指定此文本文件。

· -y--side-by-side  以並列的方式顯示文件的異同之處。

· --help  顯示幫助。

· --left-column  在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容。

· --suppress-common-lines  在使用-y參數時,僅顯示不一樣之處。

  實例:

1).比較兩個文件

  [root@localhost test3]# diff log2014.log log2013.log

  3c3

  < 2014-03

  ---

  > 2013-03

  8c8

  < 2013-07

  ---

  > 2013-08

  11,12d10

  < 2013-11

  < 2013-12

 上面的"3c3""8c8"表示log2014.loglog20143log文件在3行和第8行內容有所不一樣;"11,12d10"表示第一個文件比第二個文件多了第1112行。

2).並排格式輸出

  [root@localhost test3]# diff log2014.log log2013.log  -y -W 50

  2013-01                 2013-01

  2013-02                 2013-02

  2014-03               | 2013-03

  2013-04                 2013-04

  2013-05                 2013-05

  2013-06                 2013-06  

  2013-07                 2013-07

  2013-07               | 2013-08

  2013-09                 2013-09

  2013-10                 2013-10

  2013-11               <

  2013-12               <

  [root@localhost test3]# diff log2013.log log2014.log  -y -W 50

  2013-01                 2013-01

  2013-02                 2013-02

  2013-03               | 2014-03

  2013-04                 2013-04

  2013-05                 2013-05

  2013-06                 2013-06

  2013-07                 2013-07

  2013-08               | 2013-07

  2013-09                 2013-09

  2013-10                 2013-10

                             > 2013-11

                             > 2013-12

  說明:

· "|"表示先後2個文件內容有不一樣

· "<"表示後面文件比前面文件少了1行內容

· ">"表示後面文件比前面文件多了1行內容

相關文章
相關標籤/搜索