1. 程式人生 > >Linux基礎命令---diff

Linux基礎命令---diff

diff

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出。如果要指定要比較目錄,那麼diff命令會比較目錄中相同檔名的檔案,不會比較子目錄。此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法

diff [選項]  files

 

2、選項列表

選項

說明

-v | --version

顯示命令版本資訊

--help

顯示幫助文件

-m | --mode=MODE

設定目錄的許可權

-i | --ignore-case

比較的時候,忽略大小寫

--ignore-file-name-case

在比較檔名的時候,忽略大小寫

--no-ignore-file-name-case

比較檔名的時候,不能忽略大小寫

-E | --ignore-tab-expansion

不比較tab

-b | --ingore-space-change

不比較空格數

-w | --ignore-all-space

忽略所有的空格

-B | --ignore-blank-lines

不比較空白行

-I res | --ignore-mathcing-lines=res

不比較含有指定字串res的行

--strip-trailing-cr

出去輸入行尾隨的東西

-a | --text

將所有的檔案都當做文字檔案

-c  -C NUM  --context[=NUM]

顯示不同之處的前後部分內容,預設是3行

-u  -U NUM  --unified[=NUM]

顯示相同之處的前後部分內容,預設是3行

--label LABEL

使用檔案的標籤,而不是名字

-p | --show-c-function

比較c語言檔案的時候,顯示不同之處所在的函式

-F RE  |  --show-function-line=RE

顯示匹配RE的最近的行

-q | --brief

只顯示是否有差異,不顯示詳細內容

-e | --ed

輸出一個ed指令碼

--normal

輸出一個正常的diff

-n | --rcs

結果以rcs的方式顯示

-y | --side-by-side

將兩個檔案已並列方式顯示比較結果

-W num | --width=NUM

使用“-y”選項的時候,指定列寬

--left-column

只輸出公共行的左列

--suppress-common-lines

不要輸出公共行

-D NAME | --ifdef=NAME

輸出合併檔案以顯示‘#ifdef NAME’的差異

--GTYPE-group-format=GFMT

同上,但用GFMT格式化GTYPE輸入組

--line-format=LFMT

同上,但用LFMT格式化GTYPE輸入組

--LTYPE-line-format=LFMT

同上,但用LFMT格式化LTYPE輸入行

-l | --paginate

將輸出傳遞給pr”以分頁

-t | --expand-tabs

將製表符展開為輸出中的空格

-T | --initial-tab

通過預置選項卡使製表符對齊

-N | --new-file

將缺席檔案視為空檔案

--unidirectional-new-file

將缺席的第一批檔案視為空檔案

-s | --report-identical-files

當兩個檔案相同時報告

-X FILE | --exclude-from=FILE

排除與檔案中任何模式匹配的檔案

-S FILE | --starting-file=FILE

從檔案開始比較目錄時

-r | --recursive

用遞迴的方式比較子目錄下的所有檔案

-x path

不比較指定的檔案

--from-file=FILE1

將FILE 1與所有運算元進行比較。FILE 1可以是一個目錄

--to-file=FILE2

將所有運算元與檔案2進行比較。檔案2可以是一個目錄

--horizon-lines=NUM

保持通用字首和字尾的NUM行

-d  --minimal

努力找出一組較小的變更

--speed-large-files

假設檔案很大,並且有許多零散的小更改。

 

3、例項

1)比較兩個檔案,不使用引數 (兩個檔案只有第一行不同)

[[email protected] test02]# diff 1.c 2.c             //直接比較,這裡只輸出不同之處

1c1

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出,adAD檔案。

---

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出。

2)使用選項-y,以分列的方式輸出兩個檔案

[[email protected] test02]# diff -y 1.c 2.c             //使用選項y,這裡以列的方式,顯示檔案全部內容

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出,adAD檔案。              |    逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出。

如果要指定要比較目錄,那麼diff命令會比較目錄中相同檔名的文                  如果要指定要比較目錄,那麼diff命令會比較目錄中相同檔名的文

此命令的適用範圍:RedHatRHELUbuntuCentOSSUSEopenSUS            此命令的適用範圍:RedHatRHELUbuntuCentOSSUSEopenSUS

[[email protected] test02]# diff  1.c 2.c

3)使用選項-W,指定列寬 

[[email protected] test02]# diff -y -W 100 1.c 2.c     //這裡指定列寬100,並不能完全顯示,因此看不到差異之處

逐行比較兩個文字檔案,把檔案的差異顯示到標準      |   逐行比較兩個文字檔案,把檔案的差異顯示到標準

如果要指定要比較目錄,那麼diff命令會比較目錄         如果要指定要比較目錄,那麼diff命令會比較目錄

此命令的適用範圍:RedHatRHELUbuntuCentO    此命令的適用範圍:RedHatRHELUbuntuCentO

4)比較目錄 

[[email protected] weijie]# diff test01 test02               //這裡只比較目錄下相同名字的檔案

diff test01/1.c test02/1.c

1c1

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出。

---

逐行比較兩個文字檔案,把檔案的差異顯示到標準輸出,adAD檔案。

5)使用選項-q,檢視是否不同

[[email protected] weijie]# diff -q test01/1.c test02/1.c     //比較是否不同

Files test01/1.c and test02/1.c differ                         //只顯示是否相同,不顯示詳細不同之處