diff - compare files line by line
diff命令用于比较文件的差异。
diff以逐行的方式,比较文本文件的异同处。
如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
语法:
diff [OPTION]... FILES
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数:
示例:
# 准备两个完全相同的文件 [root@oldboy new]# ls passwd_file_1.txt passwd_file_2.txt [root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt # 在2文件中添加一行内容,再比较 [root@oldboy new]# echo "new line">>passwd_file_2.txt [root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt 72a73 > new line
说明:上面的“72a73”表示password_file_1.txt和password_file_2.txt文件,passwd_file_2.txt文件比第一个文件多了一行,符号>表示的是第二个文件的内容,显示的是比第一个文件多一行的行内容。
字母acd的意思:
符号<, >, ---的意思:
更多的示例说明:
[root@oldboy new]# echo aaa>>passwd_file_1.txt [root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt 73c73 < aaa --- > new line
说明:表示第一个文件和第二个文件的第73行不同,分别为aaa和new line。
[root@oldboy new]# echo "add more lines to file1">>passwd_file_1.txt [root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt 73,74c73 < aaa < add more lines to file1 --- > new line
说明:表示第一个文件和第二个文件的73行都不同,且分别显示了其内容;一个文件比第二个文件多了第74行,并未用74a73的方式显示,而是用输出内容的方式显示。
# 手动删除第二个文件的第一行,再比较
[root@oldboy new]# ls passwd_file_1.txt passwd_file_2.txt [root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt 1d0 < root:x:0:0:root:/root:/bin/bash 73,74c72 < aaa < add more lines to file1 --- > new line
说明:1d0,说明第一个文件的第一行和第二个文件的第0行,第0行的内容仅在第一个文件中存在。即表示第一个文件需要删除第一行,然后再和第二个文件进行比较。
比较目录内的文件:
[root@oldboy new]# diff /etc/rc3.d /etc/rc1.d Only in /etc/rc1.d: K25sshd Only in /etc/rc1.d: K36mysqld Only in /etc/rc1.d: K60crond Only in /etc/rc3.d: K75blk-availability Only in /etc/rc3.d: K75udev-post Only in /etc/rc1.d: K88rsyslog Only in /etc/rc1.d: K90network Only in /etc/rc3.d: K99cpuspeed Only in /etc/rc3.d: K99lvm2-monitor Only in /etc/rc1.d: S02lvm2-monitor Only in /etc/rc3.d: S10network Only in /etc/rc3.d: S12rsyslog Only in /etc/rc1.d: S13cpuspeed Only in /etc/rc1.d: S25blk-availability Only in /etc/rc1.d: S26udev-post Only in /etc/rc3.d: S55sshd Only in /etc/rc3.d: S64mysqld Only in /etc/rc3.d: S90crond Only in /etc/rc3.d: S99local Only in /etc/rc1.d: S99single [root@oldboy new]# diff /etc/rc3.d /etc/rc5.d Only in /etc/rc5.d: K36mysqld Only in /etc/rc3.d: S64mysqld
原文:https://www.cnblogs.com/zoe233/p/11808487.html