|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 H1 x! j) I& n- n9 q: E
Linux diff命令用于比较文件的差异。
* |, D: |) O* H* t- d
' }# b6 p2 l3 Adiff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
- U$ u" M+ V9 W# h
5 y9 a q3 A# s+ A8 w语法
1 G& o ?4 T& [' Vdiff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
! R% I# ?# C, C# {参数:
! c) C# d/ H* ^- B$ p0 `* E" A* I) }! u
: s- F8 f4 d+ E# m. X: k-<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
) g: ^+ F. V& U$ h0 _! @-a或--text diff预设只会逐行比较文本文件。0 D# ^6 T$ h w. k, a
-b或--ignore-space-change 不检查空格字符的不同。1 n' I# t: l3 E$ N' j4 {
-B或--ignore-blank-lines 不检查空白行。
& Z! ` E8 |2 c+ p7 c0 [4 L: ?-c 显示全部内文,并标出不同之处。
$ l5 n! v. ~0 D$ k" n0 \-C<行数>或--context<行数> 与执行"-c-<行数>"指令相同。
6 Y( T- I4 c/ N/ [/ y+ W8 |-d或--minimal 使用不同的演算法,以较小的单位来做比较。) W) k! ?# c/ g
-D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。
. |& D- V- v; U$ q5 |0 F-e或--ed 此参数的输出格式可用于ed的script文件。
! S" R) h& s1 o6 s" D-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
) j3 D$ k/ ]- t-H或--speed-large-files 比较大文件时,可加快速度。
2 b+ x) M: w1 f. P/ {+ {" C-l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。) \: d. K# V$ G9 m6 I/ V
-i或--ignore-case 不检查大小写的不同。- x+ ]% m% l; J5 S" l. x$ E
-l或--paginate 将结果交由pr程序来分页。
; p* f- h6 i. e-n或--rcs 将比较结果以RCS的格式来显示。4 P: a5 P- i* n( M `; W' s7 H# O
-N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:0 `8 e# Y. g4 E
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
" _/ Q; o0 p) d" D: T/ T! N5 i-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。# c/ H/ A$ [* T, r1 |2 u
-P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
$ | E3 n, D7 S" m' L" Q-q或--brief 仅显示有无差异,不显示详细的信息。
& `0 x5 ^$ x8 E-r或--recursive 比较子目录中的文件。
5 R; i# I% l# } p0 S-s或--report-identical-files 若没有发现任何差异,仍然显示信息。- i! O7 {1 z* k9 W
-S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。
" D, Z. E% k6 t3 S) y-t或--expand-tabs 在输出时,将tab字符展开。) Z {9 K& o$ |+ g8 M
-T或--initial-tab 在每行前面加上tab字符以便对齐。
& Y7 N7 l& G- ~! F' Q4 S-u,-U<列数>或--unified=<列数> 以合并的方式来显示文件内容的不同。+ Y: [4 N, ^ a3 c9 {5 K
-v或--version 显示版本信息。
. e3 Q; r' f9 f$ y! E5 v-w或--ignore-all-space 忽略全部的空格字符。" p M1 c( A, s) {3 E
-W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。( F* b7 \% ^- ?
-x<文件名或目录>或--exclude<文件名或目录> 不比较选项中所指定的文件或目录。
* Y! m( [+ \' k% H; S- i' ~5 W7 g-X<文件>或--exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。3 H5 I* I# c7 D
-y或--side-by-side 以并列的方式显示文件的异同之处。
. \1 @2 f1 P4 r2 O5 U% d' o8 o9 Q7 V1 y--help 显示帮助。7 A" ]4 ^ }6 c: j. F) O; ~
--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。9 x$ D! `0 } W7 g, T5 n
--suppress-common-lines 在使用-y参数时,仅显示不同之处。' Z' T: t+ w& L' C
实例1:比较两个文件8 O3 G# a$ q7 S5 S7 X* | r' q6 W D
[root@localhost test3]# diff log2014.log log2013.log
$ c6 A- K( ~# m4 A3c3! J# `( M/ q* z) B% y |
< 2014-03
& |) V3 H) k9 @( F+ |& l---+ i O2 _6 G, k3 x6 |- g
> 2013-035 ]: N6 I% a2 M3 V _7 {# }' S. P
8c8, t% [ `: a ~9 x& b; e! V: W
< 2013-07
7 K" n- `$ n8 i3 M4 i% j; X---" w i9 c6 q. V
> 2013-08
( I5 |* W. q' |* L1 @6 E3 C11,12d10) y6 Y6 A9 |* i5 f k3 B: y8 X
< 2013-111 g* O/ [$ \7 G0 i" X3 Q. U5 j
< 2013-12
3 g! j2 r8 i( m9 S0 x' M上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
$ m8 E5 _4 N# G4 ^4 k$ {3 u/ c3 l( J, j: [: j
实例2:并排格式输出
1 l# ^$ @# a& L7 z2 _: e$ S. c[root@localhost test3]# diff log2014.log log2013.log -y -W 50* r/ ?- f `3 `5 C2 n6 ?. d
2013-01 2013-01
7 S* I* b6 g! @, ~2013-02 2013-02! `+ A& h! C* M
2014-03 | 2013-03
4 o* U0 @) h5 c7 n: g; U2 @+ r" K2013-04 2013-04
0 F# Z+ m: j0 g3 q2013-05 2013-059 B, a- b% n/ K/ I! [3 D7 T' C9 I( k
2013-06 2013-06
5 Q _- _; P& L2013-07 2013-07
& t& ]' O( I! A! z8 C- h2013-07 | 2013-08. M3 X& m2 R! }; s) {0 z8 L
2013-09 2013-097 j" N! j6 M4 x* R( e
2013-10 2013-10$ S0 d Y( R2 ~) {! j& t$ N) d
2013-11 <
7 v( W3 i2 P6 E- H; \2013-12 <6 z& ]& p& `# W& j# J! P) A
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
, J( X! ]% K6 {1 U2013-01 2013-01
- e1 k8 c7 l! Q2 a2013-02 2013-02& F: _% h0 i7 p8 S; r
2013-03 | 2014-03
/ Y6 h; g" J5 f6 X7 \* H V/ P2013-04 2013-04
7 H! v+ i" R: t2013-05 2013-055 ^6 O! I4 e! D6 i+ u/ p
2013-06 2013-06
: K/ f9 w+ ]1 f( Q, Z6 h2013-07 2013-07
" O8 f6 [0 V' g1 D2013-08 | 2013-07! s- c, L; T$ I4 M$ I
2013-09 2013-09
6 u+ {' U, \2 C9 {2013-10 2013-10& H6 k$ \7 J5 h0 Z/ i
> 2013-11
6 d ]: Z$ S- g > 2013-12
. ?& g4 I7 ?' p& n9 h/ \# P说明:- K i5 n% n: X6 M+ ~9 o& Z
! h$ Y* p ?. r# Z
"|"表示前后2个文件内容有不同
: H2 P" W& J! D/ E"<"表示后面文件比前面文件少了1行内容3 d S4 n) O& O" z: E4 v0 Z
">"表示后面文件比前面文件多了1行内容 |
|