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)比較兩個文件,不使用參數 (兩個文件只有第一行不同)

[root@localhost test02]# diff 1.c 2.c             //直接比較,這裏只輸出不同之處

1c1

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

---

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

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

[root@localhost test02]# diff -y 1.c 2.c             //使用選項y,這裏以列的方式,顯示文件全部內容

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

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

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

[root@localhost test02]# diff  1.c 2.c

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

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

逐行比較兩個文本文件,把文件的差異顯示到標準      |   逐行比較兩個文本文件,把文件的差異顯示到標準

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

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

4)比較目錄 

[root@localhost weijie]# diff test01 test02               //這裏只比較目錄下相同名字的文件

diff test01/1.c test02/1.c

1c1

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

---

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

5)使用選項-q,查看是否不同

[root@localhost weijie]# diff -q test01/1.c test02/1.c     //比較是否不同

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

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章