仅针对特定类型文件的 Linux 目录差异比较


本文将学习如何在 Linux 中仅对特定类型的文件进行目录差异比较。

摘要

在 Linux 中,一个常用的操作是比较文件并识别其差异。这在比较复杂的代码或配置文件时非常有用。Linux 有一个强大的内置工具称为 **diff**,用于比较目录,它没有错误并且节省时间。

以下是一些示例,将帮助我们学习如何应用这些有趣且灵活的命令:

diff 命令

使用 diff 命令,我们可以逐行比较两个文件的内容,如果存在任何差异,它将列出差异以及对应的行号。此外,它还可用于对比两个目录的内容。

在 shell 脚本中,当我们希望根据两个文件的比较执行操作时,diff 命令至关重要。为了快速比较两个目录,我们将使用以下示例中的 diff 命令:

示例

$ diff dev home

输出

Only in home: cg
Only in dev: core
Only in dev: fd
Only in dev: full
Only in dev: mqueue
Only in dev: null
Only in home: objc
Only in dev: ptmx
Only in dev: pts
Only in dev: random
Only in home: redxx
Only in dev: shm
Only in dev: stderr
Only in dev: stdin
Only in dev: stdout
Only in dev: tty
Only in dev: urandom
Only in dev: zero

从输出中可以看出,上面列出了两个目录的内容,并显示了它们的不同之处。

在另一个示例中,我们将看到如何使用 diff 命令的不同变体。在这里,我们将使用“-y”以侧面视图的形式获取信息,这将更好地查看和理解差异:

示例

$ diff -y tclConfig.sh tclooConfig.sh

输出

TCL_MAJOR_VERSION='8' | TCLOO_LIB_SPEC="7"
TCL_MINOR_VERSION='6' | TCLOO_STUB_LIB_SPEC="4"
TCL_PATCH_LEVEL='.8'  | TCLOO_INCLUDE_SPEC="6"
TCL_VERSION='8.6'     | TCLOO_PRIVATE_INCLUDE="1"

这是另一个示例,展示了如何使用 diff 命令的不同变体。在这里,我们将使用“-u”来显示没有额外上下文行的输出,这将提供有关差异的具体信息:

示例

$ diff -u file1.sh file2.sh

输出

––– file1.sh 2019-05-11 15:50:49.000000000 +0000
+++ file2.sh 2019-05-11 15:50:43.000000000 +0000
@@ -1 3, +1 5
It will create shell variables
This script is intended to be included
The information in this file is specific
+These are mostly empty
+All libraries and include files are just part of Tcl

在输出中,我们可以清楚地注意到上一步输出中两个文件的差异。正如我们所知,file2 在结尾处有两行多余的行。这些行在输出中以其前面带有加号 (+) 来突出显示。由于 file1 在上面的命令中位于 file2 之前,因此 diff 命令是从 file1 的角度比较文件的。

结论

在本文中,我们学习了 diff 命令的用例。首先,我们看到了 diff 命令的实际用途,即如何使用它来区分两个目录。

这些是 diff 命令在 Linux 中使用的场景。我希望您发现这些命令示例有用,并且学习和使用 Linux 很容易。

更新于:2022-12-19

364 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告