非常教程

Linux参考手册

Linux diff命令

Linux diff命令

Linux diff命令

Linux diff命令

Linux 命令大全

Linux diff命令用于比较文件的差异。

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

语法

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

参数

  • -<行数>  指定要显示多少行的文本。此参数必须与-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参数时,仅显示不同之处。

    实例1:比较两个文件

    [root@localhost test3]# diff log2014.log log2013.log 
    3c3
    < 2014-03
    ---
    > 2013-03
    8c8
    < 2013-07
    ---
    > 2013-08
    11,12d10
    < 2013-11
    < 2013-12
    

    上面的"3c3"和"8c8"表示log2014.log和log20143log文件在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-12               <
    [root@localhost test3]# diff log2013.log log2014.log  -y -W 50
    2013-01                 2013-01
    2013-02                 2013-02
    2013-03               | 2014-03
    2013-04                 2013-04
    2013-05                 2013-05
    2013-06                 2013-06
    2013-07                 2013-07
    2013-08               | 2013-07
    2013-09                 2013-09
    2013-10                 2013-10
                          > 2013-11
                          > 2013-12
    

    说明:

    • "|"表示前后2个文件内容有不同
    • "<"表示后面文件比前面文件少了1行内容
    • ">"表示后面文件比前面文件多了1行内容

    Linux diff命令

    Linux 命令大全

    Linux diff命令

    Linux目录

    1.Linux 用户和用户组管理
    2.Linux 文件与目录管理
    3.Linux 磁盘管理
    4.Shell 变量
    5.Shell 教程
    6.linux yum 命令
    7.Shell 函数
    8.Shell 流程控制
    9.Shell test 命令
    10.Shell echo命令
    11.Linux cksum命令
    12.Linux chown命令
    13.Linux chmod命令
    14.Linux chgrp命令
    15.Linux chattr命令
    16.Linux cat命令
    17.Linux cut命令
    18.Linux indent命令
    19.Linux gitview命令
    20.Linux git命令
    21.Linux find命令
    22.Linux file命令
    23.Linux diffstat命令
    24.Linux 命令大全
    25.Linux diff命令
    26.Linux cmp命令
    27.Linux more命令
    28.Linux mktemp命令
    29.Linux mdir命令
    30.Linux mdel命令
    31.Linux mc命令
    32.Linux mattrib命令
    33.Linux lsattr命令
    34.Linux locate命令
    35.Linux less命令
    36.Linux ln命令
    37.Linux rcp命令
    38.Linux patch命令
    39.Linux paste命令
    40.Linux od命令
    41.Linux mv 命令
    42.Linux mtoolstest命令
    43.Linux mtools命令
    44.Linux mren命令
    45.Linux mread命令
    46.Linux mmove命令
    47.Linux mcopy命令
    48.Linux cp命令
    49.Linux which命令
    50.Linux umask命令
    51.Linux touch命令
    52.Linux tmpwatch命令
    53.Linux tee命令
    54.Linux split命令
    55.Linux slocate命令
    56.Linux rm命令
    57.Linux ex命令
    58.Linux egrep命令
    59.Linux ed命令
    60.Linux csplit命令
    61.Linux comm命令
    62.Linux colrm命令
    63.Linux col命令
    64.Linux whereis命令
    65.Linux rhmask命令
    66.Linux mshowfat命令
    67.Linux mtype命令
    68.Linux look命令
    69.Linux join命令
    70.Linux joe命令
    71.Linux jed命令
    72.Linux ispell命令
    73.Linux grep 命令
    74.Linux fold命令
    75.Linux fmt命令
    76.Linux fgrep命令
    77.Linux lprm命令
    78.Linux wc命令
    79.Linux uniq 命令
    80.Linux expr命令
    81.Linux tr命令
    82.Linux spell命令
    83.Linux sort命令
    84.Linux sed 命令
    85.Linux rgrep命令
    86.Linux pico命令
    87.Linux uucp命令
    88.Linux uupick命令
    89.Linux uuto命令
    90.Linux tftp命令
    91.Linux ncftp命令
    92.Linux ftp命令
    93.Linux bye命令
    94.Linux lpd命令
    95.Linux lpq命令
    96.Linux lpr命令
    97.Linux mlabel命令
    98.Linux edquota命令
    99.Linux du命令
    100.Linux dirs命令