
Linux diff 命令
diff 是 Linux 中用于对比文本文件内容差异的命令。
该命令以逐行方式检测两个文件的不同之处。若指定目录进行比较,diff 会对比其中同名文件,但不会进入子目录进行比对。
语法
diff [-abBcdefHilnNpPqrstTuvwy][-][-C ][-D ][-I ][-S ][-W ][-x ][-X ][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
常用选项说明:
- -a 或 --text:将所有文件视为文本处理。
- -b 或 --ignore-space-change:忽略空格变化。
- -B 或 --ignore-blank-lines:忽略空白行。
- -c:显示完整内容并标记差异部分。
- -d 或 --minimal:采用最小差异算法。
- -e 或 --ed:输出适用于 ed 编辑器的脚本格式。
- -f 或 --forward-ed:按原文件顺序输出差异。
- -H 或 --speed-large-files:优化大文件比较速度。
- -i 或 --ignore-case:忽略大小写差异。
- -l 或 --paginate:通过 pr 命令分页输出结果。
- -n 或 --rcs:以 RCS 格式输出差异。
- -q 或 --brief:仅报告是否有差异。
- -r 或 --recursive:递归比较子目录中的文件。
- -t 或 --expand-tabs:展开 tab 字符。
- -u 或 --unified:合并显示差异内容。
- -w 或 --ignore-all-space:忽略所有空格。
- -y 或 --side-by-side:并列显示两文件差异。
- --help:查看帮助信息。
示例1:比较两个日志文件
[root@localhost test3]# diff log2014.log log2013.log 3c3 2013-03 8c8 2013-08 11,12d10
以上输出中,"3c3"和"8c8"表示log2014.log与log2013.log在第3行和第8行存在不同;"11,12d10"表示前者比后者多出第11和12行。
示例2:并列方式展示差异
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 2013-11
> 2013-12解释:
- "|" 表示两个文件对应行内容不一致。 - ">" 表示后一个文件比前一个文件多了此行内容。










