EDA365电子论坛网
标题:
Linux diff命令
[打印本页]
作者:
baqiao
时间:
2021-7-5 14:03
标题:
Linux diff命令
1 W6 m- n; x$ B
Linux diff命令用于比较文件的差异。
/ I" a, l! j. W/ P0 w6 u
! z# N5 W: b. V* i
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
! M7 @+ i3 K% p0 ~0 I
l% A$ \) v- a/ q
语法
7 h/ [$ \. ?& J' o4 T
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
3 N, w2 g5 j3 v; M* q9 J* d
参数:
- P, j) p, m. f. U' B
, i v) g: Q6 z( {1 u( |
-<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
' k8 j x* ]0 j
-a或--text diff预设只会逐行比较文本文件。
8 n, p, x) t! V- ?; j7 Q2 Q4 Q: C4 ~
-b或--ignore-space-change 不检查空格字符的不同。
9 R* {# [7 `; c2 ~- d& }$ b
-B或--ignore-blank-lines 不检查空白行。
3 n u# E$ {. @7 z
-c 显示全部内文,并标出不同之处。
8 c7 U1 x! F& F
-C<行数>或--context<行数> 与执行"-c-<行数>"指令相同。
, U6 L% ~! |& z2 _3 G, A
-d或--minimal 使用不同的演算法,以较小的单位来做比较。
/ A5 Q9 D2 p8 t& H
-D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。
7 y- w: G: F, d9 |1 g7 z1 p
-e或--ed 此参数的输出格式可用于ed的script文件。
9 i- a, L( z9 t7 n' R2 ~
-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
# F6 Q |5 N# I9 T' M; e
-H或--speed-large-files 比较大文件时,可加快速度。
+ E5 ` n/ Z( u9 I0 k
-l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
/ m1 N1 P1 P4 T
-i或--ignore-case 不检查大小写的不同。
: P$ C6 Q, ]$ N* [
-l或--paginate 将结果交由pr程序来分页。
' f- I6 R" r/ N1 `' j
-n或--rcs 将比较结果以RCS的格式来显示。
, ^6 c* k/ ^3 k% ?
-N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
* x: U5 J3 U+ g+ ^: x' }. ^2 o* T
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
# J e8 B1 L1 `9 M3 Y0 E- r' X8 r
-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
1 A4 `" `2 h$ J5 W& b8 }( h) [
-P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
% @" h9 J6 d, v# g
-q或--brief 仅显示有无差异,不显示详细的信息。
/ E2 p( t8 d. d. w2 l
-r或--recursive 比较子目录中的文件。
" e# j5 |; W# S' w8 ~. z
-s或--report-identical-files 若没有发现任何差异,仍然显示信息。
3 d1 a& Z% h( G, U0 C- B
-S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。
/ r0 G1 |$ R7 ?9 O
-t或--expand-tabs 在输出时,将tab字符展开。
( M! E+ z& j+ L" V( ?1 c
-T或--initial-tab 在每行前面加上tab字符以便对齐。
( N# v* h, @& q6 P
-u,-U<列数>或--unified=<列数> 以合并的方式来显示文件内容的不同。
- r# f# g! d! k Z) ?% ]1 y
-v或--version 显示版本信息。
6 K# X9 X& ]% k | Q, T2 [. I
-w或--ignore-all-space 忽略全部的空格字符。
* |6 Q+ T' z# R6 X3 m+ p* D1 ?
-W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。
; d1 B$ M* }3 \" W" _$ |
-x<文件名或目录>或--exclude<文件名或目录> 不比较选项中所指定的文件或目录。
& R8 b6 p& K$ V) N
-X<文件>或--exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
5 K, N& d4 M3 B6 h
-y或--side-by-side 以并列的方式显示文件的异同之处。
( o% C0 J4 X+ v- J: [" A
--help 显示帮助。
$ P7 m% v1 [; [: b7 k J% A* M4 D
--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
2 g5 _+ J1 L1 ]- v6 X1 x
--suppress-common-lines 在使用-y参数时,仅显示不同之处。
1 Q2 j" R/ ~; ?1 `
实例1:比较两个文件
`/ z6 Q" ]1 i' [
[root@localhost test3]# diff log2014.log log2013.log
) d5 [7 v7 C- @2 n- S% t4 `8 E
3c3
! W; D. t! s+ K' D4 i! A$ V9 U* U
< 2014-03
4 c! Z, y, r) I9 b8 l" j
---
9 x6 V8 S& }* X# J: L0 f8 l
> 2013-03
6 r; J, w+ o0 k) F
8c8
" g6 E- ?1 ]) z+ S' b @9 G
< 2013-07
; W) \4 v3 L4 w9 P' D0 ?
---
- m' A1 j4 D* k! ~
> 2013-08
8 A M9 H0 _( k2 s6 U$ F7 B
11,12d10
) b1 H- a3 ]. y9 S6 p9 Z
< 2013-11
* |% H8 |0 C% `' z3 g9 ]" @
< 2013-12
9 X3 b+ l6 E& q% f
上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
& a- D, B# d6 V
* v$ {* p M% J; ~$ o0 [* }
实例2:并排格式输出
' _7 t; k5 ?3 t+ t1 z4 z3 h
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
) v2 n* s$ N' \4 _* a7 U9 F
2013-01 2013-01
' P( x" n. w4 C# l6 J# B
2013-02 2013-02
- w7 H% Y) `! O* l) Y
2014-03 | 2013-03
, Q# G& [# e: u( K4 y% r
2013-04 2013-04
6 c7 z7 d9 z# ~, R. L1 L9 f
2013-05 2013-05
! |# h( X, [9 p q
2013-06 2013-06
6 B# y) `2 T' L% U
2013-07 2013-07
: U; X' o( l- u# P) ]
2013-07 | 2013-08
9 H, \0 B) O/ w( _
2013-09 2013-09
' V1 R; s, s* X2 D' H. P/ O" |
2013-10 2013-10
7 i0 g& g E" Q0 h6 ^1 B" E7 |
2013-11 <
! F5 Y0 `5 ]- L' Y8 i
2013-12 <
# D& `( U* }7 {
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
# X! N6 g6 _- m
2013-01 2013-01
: v2 K, h7 Q* ?* d
2013-02 2013-02
0 D2 Q* L0 s' r( D% a2 u' h) `
2013-03 | 2014-03
* {* g8 i! W/ ^. T+ f" O: q
2013-04 2013-04
( E% r& E3 O/ \6 ]/ x' o
2013-05 2013-05
( a* q' E/ z+ ?$ O
2013-06 2013-06
2 B, g" z, Z' q& f+ Y8 Q, M
2013-07 2013-07
! G. \( w2 h* [& \1 {9 |3 x6 n2 I
2013-08 | 2013-07
8 @! K, N+ k4 n' z
2013-09 2013-09
3 C! [/ a3 K, z2 f7 S* p2 h9 v% W
2013-10 2013-10
: Z) v' M5 S8 T. ^
> 2013-11
8 w1 R# `% Z$ g* p; I
> 2013-12
1 m! I9 @/ B h; `
说明:
' e) N5 l9 k: b! _2 F) k
& S/ J3 I) y. |* C; O$ P
"|"表示前后2个文件内容有不同
( w& m- h* E' v$ E! a9 u. ~
"<"表示后面文件比前面文件少了1行内容
/ v5 S9 ?- X8 S/ J
">"表示后面文件比前面文件多了1行内容
作者:
NNNei256
时间:
2021-7-5 15:07
Linux diff命令
作者:
CCxiaom
时间:
2021-7-5 18:03
Linux diff命令
作者:
AustCor1
时间:
2021-7-5 18:06
Linux diff命令
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2