查找和比较文件的命令
1.comm命令
comm命令对两个已排序文件进行逐行比较。
(1)一般格式
c omm[-123] file1 file2
(2)说明
comm命令对两个已经排好序的文件进行比较。其中,filel 和file2是已经排好序的文件。comm从这两个文件中读取正文行,进行比较,最后生成三列输出:仅在filel中出现的行,仅在file2中出现的行,在两个文件中都出现的行。若文件名为“-”,则表示从标准输入读取。
(3)常用选项
-123:选项1、2和3分别表示不显示comm输出中的第一列、第二列和第三列。(4)示例
$ comm -12 m1 m2
(比较文件m1和m2,并且只显示它们共有的行)
- diff命令
diff命令比较两个文本文件,,并找出它们的不同,比comm命令能完成更复杂的检查,并且不要求两个文件预先排好序。
(1)一般格式
diff[选项]文件1 文件2
(2)说明
diff命令逐行比较两个文件,列出它们的不同之处,并且告诉用户为了使两个文件一致,需要修改它们的哪些行。若两个文件完全一样,则该命令不显示任何输出。
diff命令输出的一般形式如下:
11a n3, n4
(表示把文件1的n1行附加到文件2的n3~n4行后,则二者相同)
n1,n2dn3
(表示删除文件1的n1~n2行及文件2的n3行,则二者相同)
n1, n2 C n3, n4 (表示把文件1的n1n2行改为文件2的n3n4行,则二者相同)
这些行类似ed命令,把文件1转换成文件2。字母a、d和c之前的行号n1、n2是针对文件1的,其后面的行号n3、n4 是针对文件2的。字母a表示附加,字母d表示删除,字母c表示修改。
在上述每一行后面跟随受到影响的若干行,以“<”开头的行属于文件1,以“>”开头的行属于文件2。
diff命令能区分块特别文件、字符特别文件及管道文件(FIFO),不会把它们与普通文件进行比较。
(3)常用选项
-b:忽略空格造成的差别。例如,“How areyou"与“How areyou ”被看成用相同的字符串。
-c: 输出格式是带上下文的三行格式。
-Cn:输出格式是有上下文的n行格式。
-e: 输出一个合法的ed脚本。
-i: 忽略字母大小写的区别。
-r: 当文件1和文件2都是目录时,递归比较找到的各子目录。
(4)注意
若用“-”表示文件1或文件2,则意味着标准输入。若文件1或文件2是目录,则diff命令将使用该目录中的同名文件进行比较。若文件1和文件2都是目录,则diff会产生很多信息。若一个目录中只有一个文件,则产生一条信息,指出该目录路径名和其中的文件名。