A. linux 基礎教程 11-基本命令diff和comm
diff命令主要用來比較文件的差異。diff會以逐行的方式比較文本文件的差異,如果指定比較的是目錄,則diff會比較目錄中相同文件名的文件,但不會比較其子目錄。
主要參數如下所示:
second.txt
comm命令主要用於比較兩個 已經排過序 的文件。
主要參數如下所示:
comm在對比文件前 一定要先排序 ,否則會出現報錯提示,以上面diff示例的中的first.txt和second.txt為例
B. 求文件對比命令
估計樓主的問題主要是,如果直接復制過去,沒有全否選擇,要點擊近兩萬次否定選擇,太費事。但是文件又太多,想一個一個從其中篩選又不太方便。
如果是這樣,可以建議先用tree命令可以把兩個文件夾下的文件名全部寫入到兩個文本文件中(cmd /? 可以看使用方法)
然後用編輯器(如ultraedit),它有個文件比較功能,可以高亮度顯示出不同的文件名,剩下的就是寫一個bat批處理,一次性把這些文件到指定文件夾了。
這個方法費時的就是最後的時候還是需要文件名一個一個得復制上去。但是卻節省了篩選不同文件的時間。
C. CMD命令 比較文件
FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]
[drive1:][path1]filename1 [drive2:][path2]filename2
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2
/A 只顯示每個不同處的第一行和最後一行。
/B 執行二進制比較。
/C 不分大小寫。
/L 將文件作為 ASCII 文字比較。
/LBn 將連續不匹配的最大值設為指定
的行數。
/N 在 ASCII 比較上顯示行數。
/OFF[LINE] 不要跳過帶有離線屬性集的文件。
/T 不要將 tab 擴充到空格。
/U 將文件作為 UNICODE 文字文件比較。
/W 為了比較而壓縮空白(tab 和空格)。
/nnnn 指定不匹配處後必須連續匹配的行數。
[drive1:][path1]filename1
指定要比較的第一個文件或第一個文件集。
[drive2:][path2]filename2
指定要比較的第二個文件或第二個文件集。
D. dos命令之FC命令-文件比較命令
dos命令之FC命令-文件比較命令
FC——文件比較命令
1.功能:比較文件的異同,並列出差異處。
2.類型:外部命令
3.格式:FC[盤符:][路徑名]〈文件名〉[盤符:][路徑名][文件名][/A][/B][/C][/N]
4.使用說明:
(1)選用/A參數,為ASCII碼比較模式;
(2)選用/B參數,為二進制比較模式;
(3)選用/C參數,將大小寫字元看成是相同的'字元。
(4)選用/N參數,在ASCII碼比較方式下,顯示相異處的行號。 ;
E. Liunx比較命令:comm/diff
比較兩個文件內容的不同,主要有comm和diff兩個命令。
主要用法:comm file1.txt file2.txt
註:在comm比較之前需要對兩個文件進行sort !!!
可以輸出在僅第一個文件里出現的、僅在第二個文件里出現的和兩個文件共有的內容:
comm -1 file1.txt file2.txt # 不顯示第一個文件特有的內容,顯示第二個文件特有的內容和共有的內容
comm -2 file1.txt file2.txt # 不顯示第二個文件特有內容
comm -3 file1.txt file2.txt # 不顯示共有
comm -12 file1.txt file2.txt # 第一個和第二個共有
comm -23 file1.txt file2.txt # 第一個特有
comm -13 file1.txt file2.txt # 第二個特有
也可以專門比較某兩列或某幾列:
comm -12 <(sort file1.txt | cut -f1) <(sort file1.txt | cut -f2.txt) # 這個只能在前台運行
diff可以直接輸出比較結果,對第一個文件提出修改建議使得第一個文件與第二個文件一致。
創建兩個文件:cat file1.txt
one
two
three
第二個文件: file2.txt
one
two
文件夾內容比較:
diff -ruNa dir1/ dir2/
-------------------------------------------------------------------------------------------------------------------------------------------------------------I'm a line ! Thanks !----------------------------------------------------------------------------------------------------------------
F. Linux使用diff命令怎麼比較文件
Y:diff命令
●簡介
★diff命令用於比較文件的差異。
★diff以逐行的方式,比較文本文件的異同處。如果指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中子目錄。
●語法
★命令格式:diff[參數][文件1或目錄1][文件2或目錄2]
★參數:
☆-<行數> 指定要顯示多少行的文本。此參數必須與-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參數時,僅顯示不同之處。
●案例
★實例一:比較兩個文件
[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.log和log20143log文件在3行和第8行內容有所不同;"11,12d10"表示第一個文件比第二個文件多了第11和12行。
★實例二:並排格式輸出
[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行內容;
G. linux diff命令詳解
diff命令在最簡單的情況下,比較給定的兩個文件的不同。如果使用「-」代替「文件」參數,則要比較的內容將來自標准輸入。diff命令是以逐行的方式,比較文本文件的異同處。如果該命令指定進行目錄的比較,則將會比較該目錄中具有相同文件名的文件,而不會對其子目錄文件進行任何比較操作。下面是linuxdiff命令的具體介紹:H. 兩個文件如何快速對比
如果是 Windows 系統的話,使用文件比較命令 fc。進入命令提示符,輸入:fc 文件名1 文件名2,即可對這兩個文件進行比較,並顯示出它們的不同之處;若是 Linux 系統的話,在命令提示符下面,輸入:diff 文件名1 文件名2,即可對這兩個文件進行比較。
I. Linux使用diff命令怎麼比較文件
1>Diff命令的功能
Linux中Diff命令的功能為逐行比較兩個文本文件,列出其不同之處。它對給出的文件進行系統的檢查,並顯示出兩個文件中所有不同的行,不要求事先對文件進行排序。
2>語法
diff
[options]
file1
file2
該命令告訴用戶,為了使兩個文件file1和file2一致,需要修改它們的哪些行。如果用」-」表示file1或file2,則表示標准輸入。如果file1或file2是目錄,那麼diff將使用該目錄中的同名文件進行比較。
3>[options]主要參數
-a:將所有文件當作文本文件來處理。
-b或–ignore-space-change
忽略空格造成的不同。
-B或–ignore-blank-lines
忽略空行造成的不同。
-c:使用綱要輸出格式。
-H:利用試探法加速對大文件的搜索。
-I:忽略大小寫的變化。
-n
–rcs:輸出RCS格式。
-N或–new-file
在比較目錄時,若文件A僅出現在某個目錄中,會顯示:Only
in目錄;文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。
-r或–recursive
比較子目錄中的文件。
-u,-U<列數>或–unified=<列數>
以合並的方式來顯示文件內容的不同。
4>使用方法的實例說明
例如:
diff
/usr/xu
mine
把目錄/usr/xu
中名為mine的文件與當前目錄中的mine文件進行比較。
通常輸出由下述形式的行組成:
n1
a
n3,n4
n1,n2
d
n3
n1,n2
c
n3,n4
這些行類似ed命令把filel轉換成file2。字母(a、d和c)之前的行號(n1,n2)是針對file1的,其後面的行號(n3,n4)是針對file2的。字母a、d和c分別表示附加、刪除和修改操作。
在上述形式的每一行的後面跟隨受到影響的若干行,以」<」打頭的行屬於第一個文件,以」>」打頭的行屬於第二個文件。
diff能區別塊和字元設備文件以及FIFO(管道文件),不會把它們與普通文件進行比較。
如果file1和file2都是目錄,則diff會產生很多信息。
5>diff最常用的功能
diff有很多功能平時我們不常用到,最常用的功能莫過於生成patch文件了:
diff
-urN
old/
new/
>
mysoft.patch
參數
-u
表示使用
unified
格式,-r
表示比較目錄,-N
表示將不存在的文件當作空文件處理,這樣新添加的文件也會出現在patch文件中。
然後在需要應用patch的地方使用下述命令即可:
patch
-p0
<
mysoft.patch
diff的
-y
命令(長格式為
–side-by-side)可以將屏幕分成左右兩部分,來比較兩個文件之間的差異。許多圖形化的比較工具都有這個功能,但如果只能使用命令行,這個參數就相當有用了。如果要改變左右各部分的寬度,可以通過
-W
(–width)參數來指定。
–ignore-blank-lines
參數可以不檢查空白行。這樣DOS格式和Unix格式的文件互相比較時,就不至於因為換行符不一致而出現大量的差異。
J. Linux文件比較命令的Comm命令
如果想對兩個有序的文件進行比較,可以使用comm命令。
語法:comm [- 123 ] file1 file2
說明:該命令是對兩個已經排好序的文件進行比較。其中file1和file2是已排序的文件。comm讀取這兩個文件,然後生成三列輸出:僅在file1中出現的行;僅在file2中出現的行;在兩個文件中都存在的行。如果文件名用「- 」,則表示從標准輸入讀取。
comm -1 不顯示只出現在第一個文件的行。
comm -2 不顯示只出現在第二個文件的行。
comm -3 不顯示同時出現在兩個文件的行。
comm file1 file2 顯示三列,第一列代表只出現在file1的行,第二列代表只出現在file2的行,第三列代表倆個文件同時出現的行
comm -12 顯示兩個文件同時出現的行 也就是交集
comm -13 顯示只出現在第二個文件的行
comm -23 顯示只出現在第一個文件的行
例如:假設要對文件myfile1和myfile2進行比較
$ cat myfile1
main( )
{
float a,b, i, j ,z ;
a=i=10 ; b=j=5 ;
z= i + j ;
printf(「z=%d\\n」,z) ;
}
$ cat myfile2
#include< stdio.h >
main( )
{
float i, j ,z ;
i=10 ; j=5 ;
z= i + j ;
printf(「z=%f\\n」,z) ;
}
$ comm - 12 myfile1 myfile2
main( )
{
z= i + j ;
}
就只顯示文件myfile1和myfile2中共有的行。