!!!!diff使用--exclude选项在比较时去除.svn文件夹.txt

9 篇文章 0 订阅
1 篇文章 0 订阅
http://blog.chinaunix.net/uid-20564848-id-73079.html
diff使用--exclude选项在比较时去除.svn文件夹 


2008-03-04 18:11:17
分类: LINUX
diff --exclude='*.orig' --exclude='*.o' --exclude='*.ko' \
    --exclude='*.cmd' --exclude='*.o' --exclude='CVS' \
    --exclude='.svn' --exclude='*.mod' --exclude='.*' \
    --exclude='*.rej' --exclude='*.orig' --exclude='*.symvers' \
    --exclude='debian' --exclude='*.a' --exclude='*.mod.c' \
    --exclude='System.map' --exclude='*.so' -urN \

    a b >different.patch





http://blog.csdn.net/longxj04/article/details/7033744


diff 比较2个文件夹
分类: 技术类 Linux 2011-12-02 09:43 4313人阅读 评论(0) 收藏 举报
比较文件夹记得加上-r, 这样才可以递归所有文件夹,-q可以只输出哪些文件是不一样的,对于比较文件夹,可能这个比较有用。不过-q输出不同的文件时,有些情况是一个文件一个文件夹下有,一个没有,但是-q输出的是2个文件不一样
 diff -Nrq a b





http://book.51cto.com/art/201205/338770.htm
2.1 diff指令:比较文本文件的差异


2012-05-28 12:48 李海慧/梁伟 电子工业出版社 字号:T | T
综合评级:想读(6)  在读(2)  已读(0)   品书斋鉴(0)   已有8人发表书评
一键收藏,随时查看,分享好友!
《脑动力:Linux指令速查效率手册》第2章文件与目录管理,本章将具体介绍这些管理命令的原型、参数及使用方法等。本节为大家介绍diff指令:比较文本文件的差异。
AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!
第2章  文件与目录管理


在Linux系统中,用户可以使用指令对文件和目录进行管理。例如,文件和目录的比较、连接、查找功能。最为重要的是通过这些指令可以修改文件和目录的时间、属性及其权限等。在本章中,将具体介绍这些管理命令的原型、参数及使用方法等。


2.1  diff指令:比较文本文件的差异


【语    法】diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C<行数>][-D<巨集名称>][-I<字符或字符串>][-S<文件>][-W <宽度>][-x<文件或目录>][-X<文件>][--help][--left-column][--suppress- common-line][文件或目录1][文件或目录2]


【功能介绍】该指令可以对文本文件之间进行差异比较,并列出不同之处。


【参数说明】


参    数
功    能
-<行数>
指定要显示多少行的文本,该参数必须
与参数-c或-u一起使用
-a
将所有的文件均作为文本文件进行处理
-b
不检查文件中的空格字符
-B
不检查文件的空白行
-c
显示全部的文件内容,并标识出其不同之处
续表


参    数
功    能
-C<行数>
与参数-c、-<行数>含义相同
-d
使用不同的演算法,以较小的单位进行比较
-D<巨集名称>
此参数的输出格式可以用于前置处理器巨集
-e
此参数的输出格式可以用于ed指令的script文件
-f
输出的格式类似于ed指令的script文件,
但按照原来文件的顺序显示不同处
-H
对大的文件进行比较时,可以加快其比较速度
-l<字符或字符串>
如果两个文件在某几行有不同,并且
这几行同时都包含了选项中指定的字符
或字符串,则不显示这两个文件的差异
-i
不检查文件数据的大小写不同
-n或-rcs
将比较结果以RCS的格式进行显示
-N
在比较目录时,如果文件1仅仅出现
在某个目录中,则默认显示“only in
目录名”。若比较文件1时,使用了
该参数,则diff指令将文件1与一个空
白文件进行比较
-p
如果比较的文件为C语言代码文件,
则将显示差异所在的函数名称
-P
与参数-N功能相似。但只有当目录2
中包含了目录1所没有的文件时,
才会将这个文件与空白的文件进行比较
-q
仅仅显示有无差异,并不显示详细的信息
-r
比较子目录中的文件
-s
如果没有发现任何差异,将仍然显示相关的信息
-S<文件>
在比较目录时,将从指定的文件开始比较
-t
在输出信息时,会将tab字符展开
-T
在每行前面都加上tab字符进行对齐
-u或-U<列数>
以合并的方式显示文件内容的不同
-v
显示版本信息
-w
忽略全部的空格字符
-W<宽度>
在使用参数“-y”时,指定栏宽
续表


-x<文件名或目录名>
不比较选项中所指定的文件或目录
-X<文件>
可以将文件或目录类型保存为文本文件
-y
以并列的方式显示文件的异同
--help
显示帮助信息
--left-column
在使用参数“-y”时,如果两个
文件的某一行内容相同,则只在左侧
的栏位中显示该行的内容
-- suppress-common-lines
在使用参数“-y”时,只显示其不同之处
【经验技巧】


diff指令是以逐行的方式,比较文本文件的异同处。


如果该指令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。


【示例2-1】将目录"/usr/li"下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令:


$ diff /usr/li test.txt     #使用diff指令对文件进行比较 
上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示:
n1 a n3,n4  
n1,n2 d n3  
n1,n2 c n3,n4 
其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号,"n3"、"n4"表示在文件2中的行号。


注意:以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以"<"开始的行属于文件1,以">"开始的行属于文件2。


【相关指令】locate,diffstat


【责任编辑:book TEL:(010)68476606】





https://www.centos.bz/2011/09/linux-diff/
Linux diff比较文件的差异命令详解


作者:朱 茂海 /分类:FAQ 
字号:L M S
功能说明:比较文件的差异。
语  法:diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
补充说明:diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
参  数:
 -<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
 -a或--text  diff预设只会逐行比较文本文件。
 -b或--ignore-space-change  不检查空格字符的不同。
 -B或--ignore-blank-lines  不检查空白行。
 -c  显示全部内文,并标出不同之处。
 -C<行数>或--context<行数>  与执行"-c-<行数>"指令相同。
 -d或--minimal  使用不同的演算法,以较小的单位来做比较。
 -D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
 -e或--ed  此参数的输出格式可用于ed的script文件。
 -f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
 -H或--speed-large-files  比较大文件时,可加快速度。
 -l<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
 -i或--ignore-case  不检查大小写的不同。
 -l或--paginate  将结果交由pr程序来分页。
 -n或--rcs  将比较结果以RCS的格式来显示。
 -N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
 -p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
 -P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
 -q或--brief  仅显示有无差异,不显示详细的信息。
 -r或--recursive  比较子目录中的文件。
 -s或--report-identical-files  若没有发现任何差异,仍然显示信息。
 -S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。
 -t或--expand-tabs  在输出时,将tab字符展开。
 -T或--initial-tab  在每行前面加上tab字符以便对齐。
 -u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。
 -v或--version  显示版本信息。
 -w或--ignore-all-space  忽略全部的空格字符。
 -W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
 -x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。
 -X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
 -y或--side-by-side  以并列的方式显示文件的异同之处。
 --help  显示帮助。
 --left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
 --suppress-common-lines  在使用-y参数时,仅显示不同之处。
转载请标明文章来源:《https://www.centos.bz/2011/09/linux-diff/》





http://www.jb51.net/LINUXjishu/95632.html
linux diff与comm命令比较文件(找出新增内容)


来源:互联网 作者:佚名 时间:08-02 11:39:59 【大 中 小】 在linux中,用命令diff与comm命令比较两个文件的不同,找出新增的内容部分,有需要的朋友参考下


在项目中遇到一个奇怪的bug,是由一行简单代码引起的。
代码作用:比较两个UNIX文本文件,找出并打印文本2比文本1新增加的内容。
代码调用了diff命令,例如:
 
 




复制代码代码如下:
# temp1.txt文件内容
$> cat temp1.txt
20110224
20110225
20110228
20110301
20110302
# temp2.txt文件内容
$> cat temp2.txt
20110228
20110301
20110302
20110303
20110304




# diff命令输出结果








复制代码代码如下:
$> diff temp1.txt temp2.txt
1,2d0
< 20110224
< 20110225
5a4,5
> 20110303
> 20110304
# 只输出temp2.txt文件独有的内容
$> diff temp1.txt temp2.txt | grep "> " | sed 's/> //g'
20110303
20110304




说明:输出结果去掉了两个文件的共同内容,只输出了temp2.txt的新增部分,和预想的结果一样。
 
但是,随着temp1.txt文件内容的增加,diff命令出现了不同预期的结果:








复制代码代码如下:
$> cat temp1.txt
20101216
20101217
20101220
20101221
20101223
20101224
20101227
20101228
20101229
20101230
20101231
20110103
20110104
20110105
20110106
20110107
20110110
20110111
20110112
20110113
20110114
20110117
20110118
20110119
20110120
20110121
20110124
20110125
20110126
20110127
20110128
20110131
20110201
20110202
20110203
20110204
20110207
20110208
20110209
20110210
20110211
20110214
20110215
20110216
20110217
20110218
20110221
20110222
20110223
20110224
20110225
20110228
20110301
20110302
20110303
$> cat temp2.txt
20110228
20110301
20110302
20110303
20110304
20110307
20110308
20110309
20110310
20110311
20110314
$> diff temp1.txt temp2.txt
1,55c1,11
< 20101216
< 20101217
< 20101220
< 20101221
< 20101223
< 20101224
< 20101227
< 20101228
< 20101229
< 20101230
< 20101231
< 20110103
< 20110104
< 20110105
< 20110106
< 20110107
< 20110110
< 20110111
< 20110112
< 20110113
< 20110114
< 20110117
< 20110118
< 20110119
< 20110120
< 20110121
< 20110124
< 20110125
< 20110126
< 20110127
< 20110128
< 20110131
< 20110201
< 20110202
< 20110203
< 20110204
< 20110207
< 20110208
< 20110209
< 20110210
< 20110211
< 20110214
< 20110215
< 20110216
< 20110217
< 20110218
< 20110221
< 20110222
< 20110223
< 20110224
< 20110225
< 20110228
< 20110301
< 20110302
< 20110303
---
> 20110228
> 20110301
> 20110302
> 20110303
> 20110304
> 20110307
> 20110308
> 20110309
> 20110310
> 20110311
> 20110314
$> diff temp1.txt temp2.txt | grep "> " | sed 's/> //g'
20110228
20110301
20110302
20110303
20110304
20110307
20110308
20110309
20110310
20110311
20110314




可以看到,diff命令不但输出了temp2.txt文件的新增部分(20110304-20110314),也同时输出了两个文件的共同内容(20110228-20110303),从而导致了与预期不一致的结果。
查看diff命令的man手册发现,diff的作用是比较两个文件的内容,并输出两个文件之间的差异,产生一个能够将两个文件互相转换的列表,但这个列表并不能100%保证是最小集。
于是,以上例子中,可以看到diff给出了temp1.txt和temp2.txt文件的比较差异结果,但其中包含了两个文件的共同部分,因此与预期不一样。
 
解决方法:
用comm命令代替diff,例如:








复制代码代码如下:
$> comm -13 temp1.txt temp2.txt
20110304
20110307
20110308
20110309
20110310
20110311
20110314




comm命令用来比较两个文件,具体用法:
comm [-123] file1 file2
-1 过滤file1独有的内容
-2 过滤file2独有的内容
-3 过滤file1和file2重复的内容
 
备注:
diff的输出格式,主要有以下几种:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
例如"1,2d0" "5a4,5" "1,55c1,11"等。
其中n1和n2指第一个文件的行数,n3和n4指第二个文件的行数。"a"代表add增加,"d"代表delete删除,"c"代表change整块变动。
有了diff的输出结果,可以使用patch命令将一个文件恢复成另一个,例如:








复制代码代码如下:
$> cat temp1.txt
20110224
20110225
20110228
20110301
20110302
$> cat temp2.txt
20110228
20110301
20110302
20110303
20110304
$> diff temp1.txt temp2.txt > temp.diff
$> cat temp.diff
1,2d0
< 20110224
< 20110225
5a4,5
> 20110303
> 20110304
# 使用temp.diff和temp1.txt恢复temp2文件
$> patch -i temp.diff -o temp2_restore.txt temp1.txt
Looks like a normal diff.
done
# 完成后temp2_restore和原temp2文件内容一致
$> cat temp2_restore.txt
20110228
20110301
20110302
20110303
20110304





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值