📅  最后修改于: 2023-12-03 14:48:06.459000             🧑  作者: Mango
在 Ubuntu 中,diff 命令可用于比较两个文件或目录的差异。在本指南中,我们将重点讨论如何使用 diff 命令来比较两个目录之间的差异。
diff 命令的基本语法如下:
diff [选项] 目录1 目录2
其中,目录1
和 目录2
是要比较的两个目录的路径。该命令将比较 目录1
和 目录2
中各自的文件,并显示它们之间的差异。
diff 命令的一些常用选项如下:
-q
:仅显示目录之间是否有差异,而不显示具体差异内容。-r
:递归比较子目录中的文件。-u
:将差异输出格式化为统一格式(Unified Format)。-N
:显示出缺少文件的差异。例如,要递归比较两个目录,并将差异输出为统一格式,可以使用以下命令:
diff -r -u 目录1 目录2
假设有两个目录 dir1
和 dir2
,它们的内容分别如下:
$ 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
结果告诉我们,目录 dir1
和 dir2
之间存在差异,具体差异内容可以看到 file1.txt
文件有差异,dir1/subdir
目录中存在 file2.txt
文件,而 dir2/subdir
目录中不存在 file2.txt
文件。