比较两个文件的内容

比较两个文件的内容

我有两个文件,其中包含两个硬盘驱动器(应该完全相同)的所有文件路径列表,我认为其中一个缺少文件。两个列表都有文件路径和大小,但列表的顺序不同(见下面的示例)。

是否有一个命令可以比较两个文件的差异并将差异输出到新文件?

例子:

文件1:

/docs/red
/docs/blue
/docs/yellow
/docs/green

文件2:

/docs/blue
/docs/green
/docs/red

差异文件:

/docs/yellow

答案1

使用grep且不需要对它们进行排序:

grep -Fxvf file2 file1 > diff_file

将返回以下行文件1但不是在文件2(遗漏了文件2)。

答案2

我通常使用 meld(一种非常有用的可视化差异工具)进行此类比较。

安装 meld:

sudo apt-get install meld

排序,然后比较:

sort csv1.txt > csv1-sorted.txt
sort csv2.txt > csv2-sorted.txt
meld csv1-sorted.txt csv2-sorted.txt 

答案3

我会尝试使用 sort 和 diff:

$ diff <(sort csv1.txt) <(sort csv2.txt)
4d3
< 
8d6
< /docs/yellow

答案4

如果你真正的问题是如何比较两个已挂载的文件系统我会使用rsync

看:在 Unix 和 Linux 上,Rsync 可以比较目录吗?

您可以使用-n( --dry-run) 来导致实际上不复制任何文件,然后输出差异。默认情况下,这还会显示一个文件是否比另一个文件新,即内容是否已更改。我相当有信心可以将其配置为忽略文件内容。

相关内容