📜  ubuntu diff 目录 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:48:06.459000             🧑  作者: Mango

Ubuntu diff 目录 - Shell/Bash

在 Ubuntu 中,diff 命令可用于比较两个文件或目录的差异。在本指南中,我们将重点讨论如何使用 diff 命令来比较两个目录之间的差异。

命令语法

diff 命令的基本语法如下:

diff [选项] 目录1 目录2

其中,目录1目录2 是要比较的两个目录的路径。该命令将比较 目录1目录2 中各自的文件,并显示它们之间的差异。

选项说明

diff 命令的一些常用选项如下:

  • -q:仅显示目录之间是否有差异,而不显示具体差异内容。
  • -r:递归比较子目录中的文件。
  • -u:将差异输出格式化为统一格式(Unified Format)。
  • -N:显示出缺少文件的差异。

例如,要递归比较两个目录,并将差异输出为统一格式,可以使用以下命令:

diff -r -u 目录1 目录2
示例

假设有两个目录 dir1dir2,它们的内容分别如下:

$ tree dir1
dir1
├── file1.txt
└── subdir
    └── file2.txt

$ tree dir2
dir2
├── file1.txt
└── subdir
    └── file3.txt

现在,我们使用 diff 命令比较这两个目录:

$ diff -r -u dir1 dir2

输出结果如下:

diff -r -u dir1/file1.txt dir2/file1.txt
--- dir1/file1.txt      2021-10-21 18:47:25.708517219 +0800
+++ dir2/file1.txt      2021-10-21 18:46:48.324611167 +0800
@@ -1 +1 @@
-file1
+file1 modified
diff -r -u dir1/subdir/file2.txt dir2/subdir/file3.txt
--- dir1/subdir/file2.txt       2021-10-21 18:47:37.344655928 +0800
+++ dir2/subdir/file3.txt       2021-10-21 18:47:10.672474644 +0800
@@ -1 +1 @@
-file2
+file3

输出结果告诉我们,dir1 目录中的 file1.txt 文件被修改过,dir1/subdir/file2.txt 文件和 dir2/subdir/file3.txt 文件不同。

如果我们只关心目录之间是否存在差异,可以使用 -q 选项。例如:

$ diff -r -q dir1 dir2
Files dir1/file1.txt and dir2/file1.txt differ
Only in dir1/subdir: file2.txt
Only in dir2/subdir: file3.txt

结果告诉我们,目录 dir1dir2 之间存在差异,具体差异内容可以看到 file1.txt 文件有差异,dir1/subdir 目录中存在 file2.txt 文件,而 dir2/subdir 目录中不存在 file2.txt 文件。