Linux基礎命令---diff

一生有你llx發表於2018-11-19

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 命令會比較目錄中相同檔名的文

此命令的適用範圍: RedHat RHEL Ubuntu CentOS SUSE openSUS             此命令的適用範圍: RedHat RHEL Ubuntu CentOS SUSE openSUS

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

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

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

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

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

此命令的適用範圍: RedHat RHEL Ubuntu CentO     此命令的適用範圍: RedHat RHEL Ubuntu CentO

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                         // 只顯示是否相同,不顯示詳細不同之處



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29270124/viewspace-2220511/,如需轉載,請註明出處,否則將追究法律責任。

相關文章