从命令行比较两个目录的内容

从命令行比较目录内容

要比较和列出两个目录的不同内容,而无需通过命令获得额外输出 和diff一样,你可以改用comm命令。首先,启动终端并键入以下命令,并根据需要调整目录路径:

comm -3 <(ls -1 folder1) <(ls -1 folder2)

列出的输出将是每个文件夹中不同的文件,文件夹 1 独有的文件左对齐,文件夹 2 独有的文件右对齐。

例如,要比较用户下载目录中名为“Pictures”的文件夹和名为“OldPictures”的文件夹的内容,语法如下:

comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)

输出可能如下所示:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)
Folder-1-File.PNG
Folder-2 -文件副本.PNG
照片 1 副本.PNG
照片 3.PNG

请注意缩进,它显示了每个文件夹中哪些文件是唯一的。在上面的示例中,文件“photo 1 copy.PNG”和“photo 3.png”是右对齐的,因此它们对于 OldPictures 目录以及 Folder-1-File.PNG 和 Folder-2-File 副本是唯一的。 PNG 是原始图片文件夹所特有的。

这在 Mac OS X 中运行良好,但它是一个通用的 unix 命令,因此您应该会发现它在 linux 和其他变体中也可用。如果您遇到任何兼容性问题,或者发现此命令不必要地复杂,请尝试 使用 diff 执行相同的功能

@climagic 在 Twitter 上发现的绝招,@osxdaily 也在那里!