diff命令是用比较两个文件和文件夹,如果比较的是两个文件,则会逐行比较两个文件,如果比较的目录的时候,则diff会比较两个文件下相同名字的文件,列出不同的二进制文件,公共子目录及只在一个目录中出现的文件。
例子1 其中1c1表示第一行,c表示change,a表示add,d表示delete
$ diff test1 test2
1c1
< 123
---
> sdf
3c3
< 3432
---
> 231
5c5
< adfs
---
> sadf
7c7
< ewr
---
例子2 -y表示并排比较2个文件,后面也可以加上-W 表示指定栏宽。
“|”表示前后2个文件内容有不同
“<”表示后面文件比前面文件少了1行内容
“>”表示后面文件比前面文件多了1行内容
diff test1 test2 -y
123 | sdf
3432 | 231
adfs | sadf
ewr | 2qwreqw
例子3 -c表示竖排比较2个文件
“+” 比较的文件的后者比前着多一行
“-” 比较的文件的后者比前着少一行
“!” 比较的文件两者有差别的行
diff test1 test2 -c
*** test1 2015-09-07 00:05:39.000000000 +0800
--- test2 2015-09-07 00:05:54.000000000 +0800
***************
*** 1,7 ****
! 123
! 3432
! adfs
! ewr
--- 1,7 ----
! sdf
! 231
! sadf
! 2qwreqw
例子4 -u表示标准比较,---表示第一个文件,+++表示第二个文件,其中@@部分,表示第一个文件从1-7行开始,第二个文件从1-7行开始
diff test1 test2 -u
--- test1 2015-09-07 00:05:39.000000000 +0800
+++ test2 2015-09-07 00:05:54.000000000 +0800
@@ -1,7 +1,7 @@
-123
+sdf
-3432
+231
-adfs
+sadf
-ewr
+2qwreqw
例子5 diff也可以用来比较2个文件夹
diff test test3
Only in test3: .DS_Store
Only in test: test1
Only in test3: test2
Only in test3: test4
例子6 可以输出补丁文件
diff -ruN test1 test2 >testpatch.log
例子7 使用补丁文件
cat test1
123
3432
adfs
ewr
patch test1 testpatch.log
patching file test1
cat test1
sdf
231
sadf
2qwreqw
参考文档
http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html