使用 diff 比较 Mac 上的两个目录内容

终端

本教程将向您展示如何使用终端比较两个目录以及这些目录的内容。这种命令行方法将输出一个文件,其中包含两个目标文件夹之间显示的精确差异。

为了实现这种比较,我们将使用命令行工具“diff”,diff 在所有 Mac 以及 linux 和其他 unix 操作系统上都可用,因此这实际上是一种用于比较目录的跨平台解决方案。 Diff 使用起来非常简单,可以轻松比较任意两个目录的内容,只需按照下面详述的语法进行操作即可。

如何使用diff比较两个目录的内容

首先,在 Mac OS 中启动终端(位于 /Applications/Utilities/),然后使用以下命令语法:

diff -rq directory1 directory2

当您指定了要比较的适当目录后,按回车键。这将执行比较 directory1 和 directory2 的 diff 命令(如果您有一个文件名中包含空格的文件夹,只需将其放在引号中,例如:“folder one”)。我们正在使用 -rq 标志,因为 -r 意味着它是递归地包含子目录,而 -q 将命令输出简化为仅显示的差异。

命令的示例输出可能如下所示:

$diff -rq directory1 directory2

仅在目录1:example221.txt

仅在目录1:SuperSecretDifferentFile.rtf

仅在目录2:AmazingScript.py

仅在目录2:MyFavoriteSong.mp3

仅在目录 2 中:MyFavoriteSpecialMovie.mp4

您还可以更进一步,将该命令的输出重定向到一个文件,假设它名为 differences.txt:

diff -rq directory1 directory2 >> differences.txt

这是一个示例以及实际打印输出的样子。假设我们正在比较名为“old music”和“new music”的文件夹,并且我们希望命令输出显示名为“musicfolders.txt”的文件中这两个目录之间的差异,那么将使用以下命令语法:

diff -rq "old music" "new music" >> musicfolders.txt

现在在当前工作目录中查找您刚刚通过输出 diff 命令创建的文件,在本例中该文件为 musicfolders.txt,其内容可以在任何文本编辑器、命令行或其他方式中查看。打开文本文件,您将看到如下内容:

仅在旧音乐中:song1.mp3
仅在旧音乐中:song2.mp3
仅在旧音乐中:song3.mp3
仅在新音乐中:instrumental1.mp3
仅限新音乐:instrumental1.mp3

如果您想从命令行查看文件,请尝试:

更多音乐文件夹.txt

否则只需导航到包含目录并在您喜欢的文本编辑器中打开它。

如果您不想创建包含更改的文本文件,只需停止命令的输出重定向即可。您可能希望将输出通过管道传输到“更多”之类的内容,以使其更易于扫描:

diff -rq “旧音乐” “新音乐” |更多

diff 命令非常强大,还有许多其他可用选项,使用 man diff 命令可获取有关如何使用 diff 以及无数可用功能的完整详细信息。

再次值得一提的是,此命令适用于 Mac OS X – 所有版本 – 以及大多数基于 Unix 的操作系统。