天天看點

!!!!diff使用--exclude選項在比較時去除.svn檔案夾.txt

http://blog.chinaunix.net/uid-20564848-id-73079.html

diff使用--exclude選項在比較時去除.svn檔案夾 

2008-03-04 18:11:17

分類: LINUX

diff --exclude='*.orig' --exclude='*.o' --exclude='*.ko' \

    --exclude='*.cmd' --exclude='*.o' --exclude='CVS' \

    --exclude='.svn' --exclude='*.mod' --exclude='.*' \

    --exclude='*.rej' --exclude='*.orig' --exclude='*.symvers' \

    --exclude='debian' --exclude='*.a' --exclude='*.mod.c' \

    --exclude='System.map' --exclude='*.so' -urN \

    a b >different.patch

http://blog.csdn.net/longxj04/article/details/7033744

diff 比較2個檔案夾

分類: 技術類 Linux 2011-12-02 09:43 4313人閱讀 評論(0) 收藏 舉報

比較檔案夾記得加上-r, 這樣才可以遞歸所有檔案夾,-q可以隻輸出哪些檔案是不一樣的,對于比較檔案夾,可能這個比較有用。不過-q輸出不同的檔案時,有些情況是一個檔案一個檔案夾下有,一個沒有,但是-q輸出的是2個檔案不一樣

 diff -Nrq a b

http://book.51cto.com/art/201205/338770.htm

2.1 diff指令:比較文本檔案的差異

2012-05-28 12:48 李海慧/梁偉 電子工業出版社 字号:T | T

綜合評級:想讀(6)  在讀(2)  已讀(0)   品書齋鑒(0)   已有8人發表書評

一鍵收藏,随時檢視,分享好友!

《腦動力:Linux指令速查效率手冊》第2章檔案與目錄管理,本章将具體介紹這些管理指令的原型、參數及使用方法等。本節為大家介紹diff指令:比較文本檔案的差異。

AD:幹貨來了,不要等!WOT2015 北京站演講PPT開放下載下傳!

第2章  檔案與目錄管理

在Linux系統中,使用者可以使用指令對檔案和目錄進行管理。例如,檔案和目錄的比較、連接配接、查找功能。最為重要的是通過這些指令可以修改檔案和目錄的時間、屬性及其權限等。在本章中,将具體介紹這些管理指令的原型、參數及使用方法等。

2.1  diff指令:比較文本檔案的差異

【語    法】diff [-abBcdefHilnNpPqrstTuvwy][-<行數>][-C<行數>][-D<巨集名稱>][-I<字元或字元串>][-S<檔案>][-W <寬度>][-x<檔案或目錄>][-X<檔案>][--help][--left-column][--suppress- common-line][檔案或目錄1][檔案或目錄2]

【功能介紹】該指令可以對文本檔案之間進行差異比較,并列出不同之處。

【參數說明】

參    數

功    能

-<行數>

指定要顯示多少行的文本,該參數必須

與參數-c或-u一起使用

-a

将所有的檔案均作為文本檔案進行處理

-b

不檢查檔案中的空格字元

-B

不檢查檔案的空白行

-c

顯示全部的檔案内容,并辨別出其不同之處

續表

參    數

功    能

-C<行數>

與參數-c、-<行數>含義相同

-d

使用不同的演算法,以較小的機關進行比較

-D<巨集名稱>

此參數的輸出格式可以用于前置處理器巨集

-e

此參數的輸出格式可以用于ed指令的script檔案

-f

輸出的格式類似于ed指令的script檔案,

但按照原來檔案的順序顯示不同處

-H

對大的檔案進行比較時,可以加快其比較速度

-l<字元或字元串>

如果兩個檔案在某幾行有不同,并且

這幾行同時都包含了選項中指定的字元

或字元串,則不顯示這兩個檔案的差異

-i

不檢查檔案資料的大小寫不同

-n或-rcs

将比較結果以RCS的格式進行顯示

-N

在比較目錄時,如果檔案1僅僅出現

在某個目錄中,則預設顯示“only in

目錄名”。若比較檔案1時,使用了

該參數,則diff指令将檔案1與一個空

白檔案進行比較

-p

如果比較的檔案為C語言代碼檔案,

則将顯示差異所在的函數名稱

-P

與參數-N功能相似。但隻有當目錄2

中包含了目錄1所沒有的檔案時,

才會将這個檔案與空白的檔案進行比較

-q

僅僅顯示有無差異,并不顯示詳細的資訊

-r

比較子目錄中的檔案

-s

如果沒有發現任何差異,将仍然顯示相關的資訊

-S<檔案>

在比較目錄時,将從指定的檔案開始比較

-t

在輸出資訊時,會将tab字元展開

-T

在每行前面都加上tab字元進行對齊

-u或-U<列數>

以合并的方式顯示檔案内容的不同

-v

顯示版本資訊

-w

忽略全部的空格字元

-W<寬度>

在使用參數“-y”時,指定欄寬

續表

-x<檔案名或目錄名>

不比較選項中所指定的檔案或目錄

-X<檔案>

可以将檔案或目錄類型儲存為文本檔案

-y

以并列的方式顯示檔案的異同

--help

顯示幫助資訊

--left-column

在使用參數“-y”時,如果兩個

檔案的某一行内容相同,則隻在左側

的欄位中顯示該行的内容

-- suppress-common-lines

在使用參數“-y”時,隻顯示其不同之處

【經驗技巧】

diff指令是以逐行的方式,比較文本檔案的異同處。

如果該指令指定進行目錄的比較,則将會比較該目錄中具有相同檔案名的檔案,而不會對其子目錄檔案進行任何比較操作。

【示例2-1】将目錄"/usr/li"下的檔案"test.txt"與目前目錄下的檔案"test.txt"進行比較,輸入如下指令:

$ diff /usr/li test.txt     #使用diff指令對檔案進行比較 

上面的指令執行後,會将比較後的不同之處以指定的形式列出,如下所示:

n1 a n3,n4  

n1,n2 d n3  

n1,n2 c n3,n4 

其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在檔案1中的行号,"n3"、"n4"表示在檔案2中的行号。

注意:以上說明指定了兩個檔案中不同處的行号及其相應的操作。在輸出形式中,每一行後面将跟随受到影響的若幹行。其中,以"<"開始的行屬于檔案1,以">"開始的行屬于檔案2。

【相關指令】locate,diffstat

【責任編輯:book TEL:(010)68476606】

https://www.centos.bz/2011/09/linux-diff/

Linux diff比較檔案的差異指令詳解

作者:朱 茂海 /分類:FAQ 

字号:L M S

功能說明:比較檔案的差異。

語  法:diff [-abBcdefHilnNpPqrstTuvwy][-<行數>][-C <行數>][-D <巨集名稱>][-I <字元或字元串>][-S <檔案>][-W <寬度>][-x <檔案或目錄>][-X <檔案>][--help][--left-column][--suppress-common-line][檔案或目錄1][檔案或目錄2]

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

參  數:

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

 -a或--text  diff預設隻會逐行比較文本檔案。

 -b或--ignore-space-change  不檢查空格字元的不同。

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

 -c  顯示全部内文,并标出不同之處。

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

 -d或--minimal  使用不同的演算法,以較小的機關來做比較。

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

 -e或--ed  此參數的輸出格式可用于ed的script檔案。

 -f或-forward-ed  輸出的格式類似ed的script檔案,但按照原來檔案的順序來顯示不同處。

 -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參數時,僅顯示不同之處。

轉載請标明文章來源:《https://www.centos.bz/2011/09/linux-diff/》

http://www.jb51.net/LINUXjishu/95632.html

linux diff與comm指令比較檔案(找出新增内容)

來源:網際網路 作者:佚名 時間:08-02 11:39:59 【大 中 小】 在linux中,用指令diff與comm指令比較兩個檔案的不同,找出新增的内容部分,有需要的朋友參考下

在項目中遇到一個奇怪的bug,是由一行簡單代碼引起的。

代碼作用:比較兩個UNIX文本檔案,找出并列印文本2比文本1新增加的内容。

代碼調用了diff指令,例如:

複制代碼代碼如下:

# temp1.txt檔案内容

$> cat temp1.txt

20110224

20110225

20110228

20110301

20110302

# temp2.txt檔案内容

$> cat temp2.txt

20110228

20110301

20110302

20110303

20110304

# diff指令輸出結果

複制代碼代碼如下:

$> diff temp1.txt temp2.txt

1,2d0

< 20110224

< 20110225

5a4,5

> 20110303

> 20110304

# 隻輸出temp2.txt檔案獨有的内容

$> diff temp1.txt temp2.txt | grep "> " | sed 's/> //g'

20110303

20110304

說明:輸出結果去掉了兩個檔案的共同内容,隻輸出了temp2.txt的新增部分,和預想的結果一樣。

但是,随着temp1.txt檔案内容的增加,diff指令出現了不同預期的結果:

複制代碼代碼如下:

$> cat temp1.txt

20101216

20101217

20101220

20101221

20101223

20101224

20101227

20101228

20101229

20101230

20101231

20110103

20110104

20110105

20110106

20110107

20110110

20110111

20110112

20110113

20110114

20110117

20110118

20110119

20110120

20110121

20110124

20110125

20110126

20110127

20110128

20110131

20110201

20110202

20110203

20110204

20110207

20110208

20110209

20110210

20110211

20110214

20110215

20110216

20110217

20110218

20110221

20110222

20110223

20110224

20110225

20110228

20110301

20110302

20110303

$> cat temp2.txt

20110228

20110301

20110302

20110303

20110304

20110307

20110308

20110309

20110310

20110311

20110314

$> diff temp1.txt temp2.txt

1,55c1,11

< 20101216

< 20101217

< 20101220

< 20101221

< 20101223

< 20101224

< 20101227

< 20101228

< 20101229

< 20101230

< 20101231

< 20110103

< 20110104

< 20110105

< 20110106

< 20110107

< 20110110

< 20110111

< 20110112

< 20110113

< 20110114

< 20110117

< 20110118

< 20110119

< 20110120

< 20110121

< 20110124

< 20110125

< 20110126

< 20110127

< 20110128

< 20110131

< 20110201

< 20110202

< 20110203

< 20110204

< 20110207

< 20110208

< 20110209

< 20110210

< 20110211

< 20110214

< 20110215

< 20110216

< 20110217

< 20110218

< 20110221

< 20110222

< 20110223

< 20110224

< 20110225

< 20110228

< 20110301

< 20110302

< 20110303

---

> 20110228

> 20110301

> 20110302

> 20110303

> 20110304

> 20110307

> 20110308

> 20110309

> 20110310

> 20110311

> 20110314

$> diff temp1.txt temp2.txt | grep "> " | sed 's/> //g'

20110228

20110301

20110302

20110303

20110304

20110307

20110308

20110309

20110310

20110311

20110314

可以看到,diff指令不但輸出了temp2.txt檔案的新增部分(20110304-20110314),也同時輸出了兩個檔案的共同内容(20110228-20110303),進而導緻了與預期不一緻的結果。

檢視diff指令的man手冊發現,diff的作用是比較兩個檔案的内容,并輸出兩個檔案之間的差異,産生一個能夠将兩個檔案互相轉換的清單,但這個清單并不能100%保證是最小集。

于是,以上例子中,可以看到diff給出了temp1.txt和temp2.txt檔案的比較差異結果,但其中包含了兩個檔案的共同部分,是以與預期不一樣。

解決方法:

用comm指令代替diff,例如:

複制代碼代碼如下:

$> comm -13 temp1.txt temp2.txt

20110304

20110307

20110308

20110309

20110310

20110311

20110314

comm指令用來比較兩個檔案,具體用法:

comm [-123] file1 file2

-1 過濾file1獨有的内容

-2 過濾file2獨有的内容

-3 過濾file1和file2重複的内容

備注:

diff的輸出格式,主要有以下幾種:

n1 a n3,n4

n1,n2 d n3

n1,n2 c n3,n4

例如"1,2d0" "5a4,5" "1,55c1,11"等。

其中n1和n2指第一個檔案的行數,n3和n4指第二個檔案的行數。"a"代表add增加,"d"代表delete删除,"c"代表change整塊變動。

有了diff的輸出結果,可以使用patch指令将一個檔案恢複成另一個,例如:

複制代碼代碼如下:

$> cat temp1.txt

20110224

20110225

20110228

20110301

20110302

$> cat temp2.txt

20110228

20110301

20110302

20110303

20110304

$> diff temp1.txt temp2.txt > temp.diff

$> cat temp.diff

1,2d0

< 20110224

< 20110225

5a4,5

> 20110303

> 20110304

# 使用temp.diff和temp1.txt恢複temp2檔案

$> patch -i temp.diff -o temp2_restore.txt temp1.txt

Looks like a normal diff.

done

# 完成後temp2_restore和原temp2檔案内容一緻

$> cat temp2_restore.txt

20110228

20110301

20110302

20110303

20110304

繼續閱讀