qq:78080458 学习交流群:150633458
分类: LINUX
2018-11-19 07:31:59
diff
逐行比较两个文本文件,把文件的差异显示到标准输出。如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文件,不会比较子目录。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
diff [选项] files
2、选项列表
选项 |
说明 |
-v | --version |
显示命令版本信息 |
--help |
显示帮助文档 |
-m | --mode=MODE |
设置目录的权限 |
-i | --ignore-case |
比较的时候,忽略大小写 |
--ignore-file-name-case |
在比较文件名的时候,忽略大小写 |
--no-ignore-file-name-case |
比较文件名的时候,不能忽略大小写 |
-E | --ignore-tab-expansion |
不比较tab |
-b | --ingore-space-change |
不比较空格数 |
-w | --ignore-all-space |
忽略所有的空格 |
-B | --ignore-blank-lines |
不比较空白行 |
-I res | --ignore-mathcing-lines=res |
不比较含有指定字符串res的行 |
--strip-trailing-cr |
出去输入行尾随的东西 |
-a | --text |
将所有的文件都当做文本文件 |
-c -C NUM --context[=NUM] |
显示不同之处的前后部分内容,默认是3行 |
-u -U NUM --unified[=NUM] |
显示相同之处的前后部分内容,默认是3行 |
--label LABEL |
使用文件的标签,而不是名字 |
-p | --show-c-function |
比较c语言文件的时候,显示不同之处所在的函数 |
-F RE | --show-function-line=RE |
显示匹配RE的最近的行 |
-q | --brief |
只显示是否有差异,不显示详细内容 |
-e | --ed |
输出一个ed脚本 |
--normal |
输出一个正常的diff |
-n | --rcs |
结果以rcs的方式显示 |
-y | --side-by-side |
将两个文件已并列方式显示比较结果 |
-W num | --width=NUM |
使用“-y”选项的时候,指定列宽 |
--left-column |
只输出公共行的左列 |
--suppress-common-lines |
不要输出公共行 |
-D NAME | --ifdef=NAME |
输出合并文件以显示‘#ifdef NAME’的差异 |
--GTYPE-group-format=GFMT |
同上,但用GFMT格式化GTYPE输入组 |
--line-format=LFMT |
同上,但用LFMT格式化GTYPE输入组 |
--LTYPE-line-format=LFMT |
同上,但用LFMT格式化LTYPE输入行 |
-l | --paginate |
将输出传递给pr”以分页 |
-t | --expand-tabs |
将制表符展开为输出中的空格 |
-T | --initial-tab |
通过预置选项卡使制表符对齐 |
-N | --new-file |
将缺席文件视为空文件 |
--unidirectional-new-file |
将缺席的第一批文件视为空文件 |
-s | --report-identical-files |
当两个文件相同时报告 |
-X FILE | --exclude-from=FILE |
排除与文件中任何模式匹配的文件 |
-S FILE | --starting-file=FILE |
从文件开始比较目录时 |
-r | --recursive |
用递归的方式比较子目录下的所有文件 |
-x path |
不比较指定的文件 |
--from-file=FILE1 |
将FILE 1与所有操作数进行比较。FILE 1可以是一个目录 |
--to-file=FILE2 |
将所有操作数与文件2进行比较。文件2可以是一个目录 |
--horizon-lines=NUM |
保持通用前缀和后缀的NUM行 |
-d --minimal |
努力找出一组较小的变更 |
--speed-large-files |
假设文件很大,并且有许多零散的小更改。 |
3、实例
1)比较两个文件,不使用参数 (两个文件只有第一行不同)
[root@localhost test02]# diff 1.c 2.c //直接比较,这里只输出不同之处 1c1 < 逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。 --- > 逐行比较两个文本文件,把文件的差异显示到标准输出。 |
2)使用选项-y,以分列的方式输出两个文件
[root@localhost test02]# diff -y 1.c 2.c //使用选项y,这里以列的方式,显示文件全部内容 逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。 | 逐行比较两个文本文件,把文件的差异显示到标准输出。 如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文 如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS [root@localhost test02]# diff 1.c 2.c |
3)使用选项-W,指定列宽
[root@localhost test02]# diff -y -W 100 1.c 2.c //这里指定列宽100,并不能完全显示,因此看不到差异之处 逐行比较两个文本文件,把文件的差异显示到标准 | 逐行比较两个文本文件,把文件的差异显示到标准 如果要指定要比较目录,那么diff命令会比较目录 如果要指定要比较目录,那么diff命令会比较目录 此命令的适用范围:RedHat、RHEL、Ubuntu、CentO 此命令的适用范围:RedHat、RHEL、Ubuntu、CentO |
4)比较目录
[root@localhost weijie]# diff test01 test02 //这里只比较目录下相同名字的文件 diff test01/1.c test02/1.c 1c1 < 逐行比较两个文本文件,把文件的差异显示到标准输出。 --- > 逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。 |
5)使用选项-q,查看是否不同
[root@localhost weijie]# diff -q test01/1.c test02/1.c //比较是否不同 Files test01/1.c and test02/1.c differ //只显示是否相同,不显示详细不同之处 |