diff 比较两个文件的差异

功能:比较两个文件的差异,并把不同地方的信息显示出来。默认diff格式的信息。

diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件。也使用patch命令对相应的文件打补丁。differential [ˌdɪfəˈrenʃəl]

语法:diff    [options]   FILES

FILES的格式:

  • FILE1 FILE2 :源是一个文件,目标也是文件。这两个文件必须是文本文件。以逐行的方式,比较文本文件的异同处。
  • DIR1 DIR2   :源是一个目录,目标是目录。diff 命令会比较两个目录下名字相同的文本文件,依照字母次序排序,列出不同的二进制文件,列出公共子目录,列出只在一个目录出现的文件。
  • FILE DIR     :源是一个文件,目标是目录。diff命令把源文件与目标目录下的同名文件比较。
  • DIR FILE     :源是一个目录,目标是文件(不是目录)。源目录下所有文件中与目标文件同名的文件,将用来与目标文件比较。

功能:比较两个文件的差异,并把不同地方的信息显示出来。默认diff格式的信息。

diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件。也使用patch命令对相应的文件打补丁。differential [ˌdɪfəˈrenʃəl]

语法:diff    [options]   FILES

FILES的格式:

  • FILE1 FILE2 :源是一个文件,目标也是文件。这两个文件必须是文本文件。以逐行的方式,比较文本文件的异同处。
  • DIR1 DIR2   :源是一个目录,目标是目录。diff 命令会比较两个目录下名字相同的文本文件,依照字母次序排序,列出不同的二进制文件,列出公共子目录,列出只在一个目录出现的文件。
  • FILE DIR     :源是一个文件,目标是目录。diff命令把源文件与目标目录下的同名文件比较。
  • DIR FILE     :源是一个目录,目标是文件(不是目录)。源目录下所有文件中与目标文件同名的文件,将用来与目标文件比较。

FILE可以是“-”,代表由标准输入设备读入的文本。DIR不能是"-"。
被指定的文件不能是标准的输入。


--------------------------**********************-------------------------------------------------

如果两个文件都是文本文件,则可以正常比对,如果其中有一个是二进制文件,那么就会出现以下错误:
 
[cpp] 
Binary files file1.txt and file2.txt differ  
 
 
解决的办法是:将所有的比对文件都当作文本文件处理,diff命令后面加上参数 -a

 ----------------------------*********************--------------------------------------------------

比较文件夹记得加上-r, 这样才可以递归所有文件夹,-q可以只输出哪些文件是不一样的,对于比较文件夹,可能这个比较有用。不过-q输出不同的文件时,有些情况是一个文件一个文件夹下有,一个没有,但是-q输出的是2个文件不一样

 diff -Nrq a b

----------------------------****************************----------------------------------------

短选项长选项含义
-i--ignore-case忽略文件内容大小写的区别
 --ignore-file-name-case忽略文件名大小写的区别
 --no-ignore-file-name-case不忽略文件名大小写的区别
-E--ignore-tab-expansion忽略由制表符宽度造成的差异
-b--ignore-space-change忽略由空格数不同造成的差异
-w--ignore-all-space忽略所有空格
-B--ignore-blank-lines忽略任何因空行而造成的差异
-I--ignore-matching-lines=RE如果某行匹配正则表达式,则忽略由该行造成的差异
-a--text所有文件都以文本方式处理
 --strip-trailing-cr去除输入内容每行末端的 carriage return 字符
-c 或 或 -C 行数--context[=行数]显示指定<行数>(默认 3 行)copied 格式的上下文
-u  或 -U 行数--unified[=行数]显示指定<行数>(默认 3 行)unified 格式的上下文(合并的方式)
 --label 标识使用<标识>代替文件名称
-p--show-c-function显示和每个差异有关的 C 函数名称
-F --show-function-line=RE显示最接近而符合<正则表示式>的一行
-q--brief只显示文件是否不同
-e--ed以 ed script 方式输出
 --normal以正常的 diff 方式输出
-n--rcs以 RCS diff 格式输出
-y--side-by-side以两列并排的方式显示
-W--width=NUM每行显示最多 NUM (默认 130) 个字符
 --left-column当有两行相同时只显示左边的一行
 --suppress-common-lines当有两行相同时不会显示
-D--ifdef=NAME输出的内容以‘#ifdef NAME’方式标明差异
 --GTYPE-group-format=GFMT效果类似,但会以 GFMT 格式处理 GTYPE 输入的行
可以是LTYPE的选择或是‘changed’
 --line-format=LFMT效果类似,但会以 LFMT 格式处理每一行资料
 --LTYPE-line-format=LFMT效果类似,但会以 LFMT 格式处理 LTYPE 输入的行
LTYPE 可以是‘old’、‘new’或‘unchanged’。
-l--paginate将输出送至‘pr’指令来分页
-t--expand-tabs将输出中的 tab 转换成空格
-T--initial-tab每行先加上 tab 字符,使 tab 字符可以对齐
 --tabsize=NUM定位字符 (tab) 的宽度,默认为 8 个空格宽
 --suppress-blank-emptysuppress space or tab before empty output lines
-r--recursive递归比较子目录中的文件
-N--new-file不存在的文件以空文件方式处理
 --unidirectional-new-file若第一文件案不存在,以空文件处理
-s--report-identical-files文件相同则报告,否则无任何提示
-x--exclude=PAT排除匹配 PAT 的文件
-X--exclude-from=FILE排除所有匹配在 FILE 中列出的模式的文件
-S--starting-file=FILE当比较目录時,由 FILE 开始比较
 --from-file=FILE1将 FILE1 和操作数中的所有文件/目录作比较。FILE1 可以是目录
 --to-file=FILE2将操作数中的所有文件/目录和 FILE2 作比较。FILE2 可以是目录
 --horizon-lines=NUMkeep NUM lines of the common prefix and suffix
-d--minimal尽可能找出最小的差异
 --speed-large-files假设文件十分大而且其中含有许多微小的差异

diff输出格式(默认):
n1 a n3,n4 表示在文件1的n1行后面添加n3到n4行
n1,n2 d n3 表示在n1到n2行之间删除n3行
n1,n2 c n3,n4 表示把n1,n2行用n3,n4行替换掉
字母a:表示附加(add)
字符c:表示修改(change)
字符d:表示删除(delete)
字母前的是源文件,字母后是目标文件。Nx表示行号。
以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。

FILE可以是“ -”,代表由标准输入设备读入的文本。DIR不能是"-"。
被指定的文件不能是标准的输入。

 

短选项长选项含义
-i--ignore-case忽略文件内容大小写的区别
 --ignore-file-name-case忽略文件名大小写的区别
 --no-ignore-file-name-case不忽略文件名大小写的区别
-E--ignore-tab-expansion忽略由制表符宽度造成的差异
-b--ignore-space-change忽略由空格数不同造成的差异
-w--ignore-all-space忽略所有空格
-B--ignore-blank-lines忽略任何因空行而造成的差异
-I--ignore-matching-lines=RE如果某行匹配正则表达式,则忽略由该行造成的差异
-a--text所有文件都以文本方式处理
 --strip-trailing-cr去除输入内容每行末端的 carriage return 字符
-c 或 或 -C 行数--context[=行数]显示指定<行数>(默认 3 行)copied 格式的上下文
-u  或 -U 行数--unified[=行数]显示指定<行数>(默认 3 行)unified 格式的上下文(合并的方式)
 --label 标识使用<标识>代替文件名称
-p--show-c-function显示和每个差异有关的 C 函数名称
-F --show-function-line=RE显示最接近而符合<正则表示式>的一行
-q--brief只显示文件是否不同
-e--ed以 ed script 方式输出
 --normal以正常的 diff 方式输出
-n--rcs以 RCS diff 格式输出
-y--side-by-side以两列并排的方式显示
-W--width=NUM每行显示最多 NUM (默认 130) 个字符
 --left-column当有两行相同时只显示左边的一行
 --suppress-common-lines当有两行相同时不会显示
-D--ifdef=NAME输出的内容以‘#ifdef NAME’方式标明差异
 --GTYPE-group-format=GFMT效果类似,但会以 GFMT 格式处理 GTYPE 输入的行
可以是LTYPE的选择或是‘changed’
 --line-format=LFMT效果类似,但会以 LFMT 格式处理每一行资料
 --LTYPE-line-format=LFMT效果类似,但会以 LFMT 格式处理 LTYPE 输入的行
LTYPE 可以是‘old’、‘new’或‘unchanged’。
-l--paginate将输出送至‘pr’指令来分页
-t--expand-tabs将输出中的 tab 转换成空格
-T--initial-tab每行先加上 tab 字符,使 tab 字符可以对齐
 --tabsize=NUM定位字符 (tab) 的宽度,默认为 8 个空格宽
 --suppress-blank-emptysuppress space or tab before empty output lines
-r--recursive递归比较子目录中的文件
-N--new-file不存在的文件以空文件方式处理
 --unidirectional-new-file若第一文件案不存在,以空文件处理
-s--report-identical-files文件相同则报告,否则无任何提示
-x--exclude=PAT排除匹配 PAT 的文件
-X--exclude-from=FILE排除所有匹配在 FILE 中列出的模式的文件
-S--starting-file=FILE当比较目录時,由 FILE 开始比较
 --from-file=FILE1将 FILE1 和操作数中的所有文件/目录作比较。FILE1 可以是目录
 --to-file=FILE2将操作数中的所有文件/目录和 FILE2 作比较。FILE2 可以是目录
 --horizon-lines=NUMkeep NUM lines of the common prefix and suffix
-d--minimal尽可能找出最小的差异
 --speed-large-files假设文件十分大而且其中含有许多微小的差异

diff输出格式(默认):
n1 a n3,n4 表示在文件1的n1行后面添加n3到n4行
n1,n2 d n3 表示在n1到n2行之间删除n3行
n1,n2 c n3,n4 表示把n1,n2行用n3,n4行替换掉
字母a:表示附加(add)
字符c:表示修改(change)
字符d:表示删除(delete)
字母前的是源文件,字母后是目标文件。Nx表示行号。
以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值