<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Diff</id>
	<title>Diff - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Diff"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Diff&amp;action=history"/>
	<updated>2026-04-20T14:27:04Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Diff&amp;diff=280&amp;oldid=prev</id>
		<title>Evan：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Diff&amp;diff=280&amp;oldid=prev"/>
		<updated>2019-10-14T13:48:47Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
diff 命令是 linux上非常重要的工具，用于比较文件的内容，特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch)，因为Linux系统中还有一个patch程序，可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。&lt;br /&gt;
&lt;br /&gt;
==命令格式==&lt;br /&gt;
用法：diff [选项]... 文件们&lt;br /&gt;
逐行比较&amp;lt;文件们&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==命令功能==&lt;br /&gt;
diff命令能比较单个文件或者目录内容。如果指定比较的是文件，则只有当输入为文本文件时才有效。以逐行的方式，比较文本文件的异同处。如果指定比较的是目录的的时候，diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。&lt;br /&gt;
&lt;br /&gt;
==常用命令参数 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 一般我常用的命令就这前面几个&lt;br /&gt;
-r或--recursive 　比较子目录中的文件。&lt;br /&gt;
-b或--ignore-space-change 　不检查空格字符的不同。&lt;br /&gt;
-a或--text 　diff预设只会逐行比较文本文件。&lt;br /&gt;
-c 　显示全部内文，并标出不同之处。&lt;br /&gt;
-x或--exclude 　不比较选项中所指定的文件或目录。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。&lt;br /&gt;
&lt;br /&gt;
-B或--ignore-blank-lines 　不检查空白行。&lt;br /&gt;
-C或--context 　与执行&amp;quot;-c-&amp;quot;指令相同。&lt;br /&gt;
-d或--minimal 　使用不同的演算法，以较小的单位来做比较。&lt;br /&gt;
-D或ifdef 　此参数的输出格式可用于前置处理器巨集。&lt;br /&gt;
-e或--ed 　此参数的输出格式可用于ed的script文件。&lt;br /&gt;
-f或-forward-ed 　输出的格式类似ed的script文件，但按照原来文件的顺序来显示不同处。&lt;br /&gt;
-H或--speed-large-files 　比较大文件时，可加快速度。&lt;br /&gt;
-l或--ignore-matching-lines 　若两个文件在某几行有所不同，而这几行同时都包含了选项中指定的字符或字符串，则不显示这两个文件的差异。&lt;br /&gt;
-i或--ignore-case 　不检查大小写的不同。&lt;br /&gt;
-l或--paginate 　将结果交由pr程序来分页。&lt;br /&gt;
-n或--rcs 　将比较结果以RCS的格式来显示。&lt;br /&gt;
-N或--new-file 　在比较目录时，若文件A仅出现在某个目录中，预设会显示：Only in目录：文件A若使用-N参数，则diff会将文件A与一个空白的文件比较。&lt;br /&gt;
-p 　若比较的文件为C语言的程序码文件时，显示差异所在的函数名称。&lt;br /&gt;
-P或--unidirectional-new-file 　与-N类似，但只有当第二个目录包含了一个第一个目录所没有的文件时，才会将这个文件与空白的文件做比较。&lt;br /&gt;
-q或--brief 　仅显示有无差异，不显示详细的信息。&lt;br /&gt;
&lt;br /&gt;
-s或--report-identical-files 　若没有发现任何差异，仍然显示信息。&lt;br /&gt;
-S或--starting-file 　在比较目录时，从指定的文件开始比较。&lt;br /&gt;
-t或--expand-tabs 　在输出时，将tab字符展开。&lt;br /&gt;
-T或--initial-tab 　在每行前面加上tab字符以便对齐。&lt;br /&gt;
-u,-U或--unified= 　以合并的方式来显示文件内容的不同。&lt;br /&gt;
-v或--version 　显示版本信息。&lt;br /&gt;
-w或--ignore-all-space 　忽略全部的空格字符。&lt;br /&gt;
-W或--width 　在使用-y参数时，指定栏宽。&lt;br /&gt;
&lt;br /&gt;
-X或--exclude-from 　您可以将文件或目录类型存成文本文件，然后在=中指定此文本文件。&lt;br /&gt;
-y或--side-by-side 　以并列的方式显示文件的异同之处。&lt;br /&gt;
--help 　显示帮助。&lt;br /&gt;
--left-column 　在使用-y参数时，若两个文件某一行内容相同，则仅在左侧的栏位显示该行内容。&lt;br /&gt;
--suppress-common-lines 　在使用-y参数时，仅显示不同之处。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==举例==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#我的常用例子&lt;br /&gt;
diff -r  -c -a -b ad_admin/ /data4/ad_admin/&lt;br /&gt;
&lt;br /&gt;
假如我要比较目录A和目录B，使用下面的命令 &lt;br /&gt;
diff -c -a -b -x *.bak -x *.log A B &amp;gt; AB.diff&lt;br /&gt;
gvim AB.diff&lt;br /&gt;
    这样就可以方便的查看不同了，目前我的vim的diff配色比较舒适。 &lt;br /&gt;
    解释一下参数的意义 &lt;br /&gt;
    -c 采用content的format输出different &lt;br /&gt;
    -a 强制使用text的模式 &lt;br /&gt;
    -b 忽略空白的不同 &lt;br /&gt;
    -x 过滤掉所比较目录中一些不想比较的文件类型，可以使用其他的pattern &lt;br /&gt;
    实际上如果需要过滤的文件类型比较多的时候，使用-x这个选项就有点麻烦了，查看了文档之后，diff提供了更加方便的参数过滤文件。  &lt;br /&gt;
    -X excludefile 忽略在excludefile中的文件类型，注意每种文件占一行 &lt;br /&gt;
    这个参数实际上在使用dos的命令行xcopy的时候也是有用过的。 &lt;br /&gt;
xcopy /E /C /Y /Exclude:file srcdir destdir&lt;br /&gt;
&lt;br /&gt;
 比较目录及目录的文件：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 比较有意思的用法==&lt;br /&gt;
&amp;lt;pre&amp;gt;实例：比较两个文件不同，并生产补丁&lt;br /&gt;
命令：&lt;br /&gt;
diff -ruN log2013.log log2014.log &amp;gt;patch.log&lt;br /&gt;
输出：&lt;br /&gt;
[root@localhost test3]# diff -ruN log2013.log log2014.log &amp;gt;patch.log&lt;br /&gt;
[root@localhost test3]# ll&lt;br /&gt;
总计 12&lt;br /&gt;
-rw-r--r-- 2 root root  80 12-07 16:36 log2013.log&lt;br /&gt;
-rw-r--r-- 1 root root  96 12-07 18:01 log2014.log&lt;br /&gt;
-rw-r--r-- 1 root root 248 12-07 21:33 patch.log&lt;br /&gt;
[root@localhost test3]# cat patc.log&lt;br /&gt;
cat: patc.log: 没有那个文件或目录&lt;br /&gt;
[root@localhost test3]# cat patch.log &lt;br /&gt;
--- log2013.log 2012-12-07 16:36:26.000000000 +0800&lt;br /&gt;
+++ log2014.log 2012-12-07 18:01:54.000000000 +0800&lt;br /&gt;
@@ -1,10 +1,12 @@&lt;br /&gt;
 2013-01&lt;br /&gt;
 2013-02&lt;br /&gt;
-2013-03&lt;br /&gt;
+2014-03&lt;br /&gt;
 2013-04&lt;br /&gt;
 2013-05&lt;br /&gt;
 2013-06&lt;br /&gt;
 2013-07&lt;br /&gt;
-2013-08&lt;br /&gt;
+2013-07&lt;br /&gt;
 2013-09&lt;br /&gt;
 2013-10&lt;br /&gt;
+2013-11&lt;br /&gt;
+2013-12[root@localhost test3]#&lt;br /&gt;
说明：&lt;br /&gt;
实例7：打补丁&lt;br /&gt;
命令：&lt;br /&gt;
输出：&lt;br /&gt;
[root@localhost test3]# cat log2013.log&lt;br /&gt;
2013-01&lt;br /&gt;
2013-02&lt;br /&gt;
2013-03&lt;br /&gt;
2013-04&lt;br /&gt;
2013-05&lt;br /&gt;
2013-06&lt;br /&gt;
2013-07&lt;br /&gt;
2013-08&lt;br /&gt;
2013-09&lt;br /&gt;
2013-10[root@localhost test3]# patch log2013.log patch.log &lt;br /&gt;
patching file log2013.log&lt;br /&gt;
[root@localhost test3]# &lt;br /&gt;
[root@localhost test3]# cat log2013.log &lt;br /&gt;
2013-01&lt;br /&gt;
2013-02&lt;br /&gt;
2014-03&lt;br /&gt;
2013-04&lt;br /&gt;
2013-05&lt;br /&gt;
2013-06&lt;br /&gt;
2013-07&lt;br /&gt;
2013-07&lt;br /&gt;
2013-09&lt;br /&gt;
2013-10&lt;br /&gt;
2013-11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 其它常用命令==&lt;br /&gt;
cmp 比较两个文件，并指出它们是否不同及不同的字节。&lt;br /&gt;
&lt;br /&gt;
diff 比较两个文件或目录，并指出哪些文件的哪些行不同。&lt;br /&gt;
&lt;br /&gt;
diff3 逐行比较三个文件。&lt;br /&gt;
&lt;br /&gt;
sdiff 合并两个文件，并以交互方式输出结果。&lt;br /&gt;
&lt;br /&gt;
vimdiff 使用vim同时编辑一个文档的2或3个版本并显示他们的区别使用。&lt;br /&gt;
&lt;br /&gt;
comm 一行一行对两个已经排序的文件进行比较，在第三列中显示同一行是否相同。&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
每天一个linux命令（36）：diff 命令&lt;br /&gt;
http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html&lt;br /&gt;
&lt;br /&gt;
linux下文件对比工具详解（diff、diff3、sdiff、vimdiff和comm）&lt;br /&gt;
http://blog.csdn.net/miltonzhong/article/details/9670771&lt;br /&gt;
&lt;br /&gt;
Linux diff比较文件的差异命令详解&lt;br /&gt;
https://www.centos.bz/2011/09/linux-diff/&lt;br /&gt;
&lt;br /&gt;
vim比较目录diff&lt;br /&gt;
http://littlewhite.us/archives/290&lt;br /&gt;
&lt;br /&gt;
[[category:shell]] [[category:ops]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>