Linux中比较文件或者文件夹差异,经常用到diff命令,先解释如下。
用法:diff [选项]... FILES
功能:逐行比较文件。
常用选项说明:
-i --ignore-case 忽略文件内容大小写的区别。用于文件夹或者文件比较时经常用到的参数:-i/-N/-q/-r/-w/-B/-b/-u/-y/--suppress-common-lines等,同时结合“>”重定向和grep等命令过滤、保存比较结果。
--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 RE --ignore-matching-lines=RE 如果某行匹配正则表达式,则忽略由该行造成的差异。
--strip-trailing-cr 去除输入内容每行末端的 carriage return 字符。
-a --text 所有文件都以文本方式处理。
-c -C 行数 --context[=行数] 显示指定<行数>(默认 3 行)copied 格式的上下文
-u -U 行数 --unified[=行数] 显示指定<行数>(默认 3 行)unified 格式的上下文
--label 标识 使用<标识>代替文件名称。
-p --show-c-function 显示和每个差异有关的 C 函数名称。
-F RE --show-function-line=RE 显示最接近而符合<正则表示式>的一行。
-q --brief 只显示文件是否不同。
-e --ed 以 ed script 方式输出。
--normal 以正常的 diff 方式输出。
-n --rcs 以 RCS diff 格式输出。
-y --side-by-side 以两列并排的方式显示。
-W NUM --width=NUM 每行显示最多 NUM (默认 130) 个字符。
--left-column 当有两行相同时只显示左边的一行。
--suppress-common-lines 当有两行相同时不会显示。
-D NAME --ifdef=NAME 输出的内容以‘#ifdef NAME’方式标明差异。
-l --paginate 将输出送至‘pr’指令来分页。
-t --expand-tabs 将输出中的 tab 转换成空格。
-T --initial-tab 每行先加上 tab 字符,使 tab 字符可以对齐。
--tabsize=NUM 定位字符 (tab) 的宽度,默认为 8 个空格宽。
--suppress-blank-empty Suppress space or tab before empty output lines.
-r --recursive 连同所有子目录一起比较。
-N --new-file 不存在的文件以空文件方式处理。
--unidirectional-new-file 若第一文件案不存在,以空文件处理。
-s --report-identical-files 当两个一样时仍然显示结果。
-x PAT --exclude=PAT 排除匹配 PAT 的文件。
-X FILE --exclude-from=FILE 排除所有匹配在 FILE 中列出的模式的文件。
-S FILE --starting-file=FILE 当比较目录時,由 FILE 开始比较。
--from-file=FILE1 将 FILE1 和操作数中的所有文件/目录作比较。FILE1 可以是目录。
--to-file=FILE2 将操作数中的所有文件/目录和 FILE2 作比较。FILE2 可以是目录。
--horizon-lines=NUM (此选项不做处理)
-d --minimal 尽可能找出最小的差异。
--speed-large-files 假设文件十分大而且其中含有许多微小的差异。
-v --version 输出版本信息。
--help 输入本帮助。
FILES 的格式可以是‘FILE1 FILE2’、‘DIR1 DIR2’、‘DIR FILE...’或
‘FILE... DIR’。
如果使用 --from-file 或 --to-file 选项,FILES 的格式则不受限制。
如果 FILE 是‘-’,则由标准输入读取内容。
如果输入相同,则退出状态为 0;1 表示输入不同;2 表示有错误产生。