在工作中需要比较两个文件夹,并且将比较结果输出成文件。
我到处找工具,不过大部分都是基于GUI的,Kdiff3, Beyond Compare, Arixis Merge, 这些工具也有命令行,但是
$ kdiff3 file1 file2 -o re.txt
仍然会进入GUI界面,不会把两个文件的差异输出到文件里。
说到底,这些比较工具的设计思想是比较文件的差异和合并文件,需要我们一个一个的查看文件的差异,不会把所
有的差异输出到文件里。
当我们比较一个有很多文件的文件夹时,我们没法知道两个文件夹的总体差异。
找来找去,还是Linux下的Diff能满足要求:
以下是为了比较高通的Modem Release
$ diff -r ~/90/modem_proc ~/70/modem_proc -X ex.txt -I 'Q[Uu][Aa][Ll][Cc][Oo][Mm][Mm]'|tee result.txt
Note: -X to filter the file type, 用-X 后面跟一个文件来过滤掉不需要的文件类型。
ex.txt is a file including the file tpye, content is below, per type per line,这个文件里每种类型占一行。
*.map
*.hex
*.lib
*.o
*.lst
*SConscript
*.elf
*.i
*.cmm
*.txt
*.min
*.cmd
*.pp
*.bin
*.sym
*.scons
*.elfweaver
*.hash
*.pbn
*.pyc
*.sconscript
*.tmp
*.complog
*.py
*.pyc
*.xml
*.pl
*.api
*.log
-I 'Q[Uu][Aa][Ll][Cc][Oo][Mm][Mm]'
-I 后面接一个正则表达式,上面是为了过滤掉包含高通字符串的行,因为这些行仅仅是改变了注释,不会对代码有影响。但是只支持比较简单的正则表达式,对合并的正则表达式不支持,例如:'(Q[Uu][Aa][Ll][Cc][Oo][Mm][Mm]|\$Header)'