递归比较CentOS 7中2个目录的内容

递归比较CentOS 7中2个目录的内容

应用程序中的构建过程正在 CentOS 7 计算机中生成目录结构。我已将应用程序复制到同一服务器中的第二个位置,进行了一些更改,然后再次运行构建过程。我想比较构建过程的结果。 需要在终端中输入哪些特定命令才能递归比较每个构建过程创建的目录中的所有嵌套目录和文件?

我想看看:
1.)哪些文件只在Directory1但是不是2. Directory2
)哪些文件仅在Directory2but不是Directory1

Directory1伊斯兰/home/user/nodejs_apps/angular2_oauth_seed_app/dist
Directory2国:/home/user/nodejs_apps/angular2-esnext-starter/dist

这是我到目前为止输入的内容,它似乎在两个方向上给出了相同的结果,这似乎是错误的:

[user@localhost angular2_oauth_seed_app]$ diff -r /home/user/nodejs_apps/angular2_oauth_seed_app/dist /home/user/nodejs_apps/angular2-esnext-starter/dist | grep /home/user/nodejs_apps/angular2_oauth_seed_app/dist
diff -r /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/boot.js /home/user/nodejs_apps/angular2-esnext-starter/dist/client/boot.js
diff -r /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/boot.js.map /home/user/nodejs_apps/angular2-esnext-starter/dist/client/boot.js.map
diff -r /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/index.html /home/user/nodejs_apps/angular2-esnext-starter/dist/client/index.html
diff -r /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/vendor.js.map /home/user/nodejs_apps/angular2-esnext-starter/dist/client/vendor.js.map
[user@localhost angular2_oauth_seed_app]$ diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist  /home/user/nodejs_apps/angular2_oauth_seed_app/dist | grep /home/user/nodejs_apps/angular2-esnext-starter/dist
diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist/client/boot.js /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/boot.js
diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist/client/boot.js.map /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/boot.js.map
diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist/client/index.html /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/index.html
diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist/client/vendor.js.map /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/vendor.js.map
[user@localhost angular2_oauth_seed_app]$ 

答案1

您看到的文件都存在于两个目录中,但是不同的;这就是他们出现的原因。

如果您运行这些命令之一,diff您可以看到它认为有什么不同

例如

diff -r /home/user/nodejs_apps/angular2-esnext-starter/dist/client/vendor.js.map /home/user/nodejs_apps/angular2_oauth_seed_app/dist/client/vendor.js.map

如果您想查看一个文件而不是另一个文件,那么该行以Only in

所以在这个简单的树中:

$ mkdir X Y
$ touch X/1 Y/2
$ echo a file > X/a
$ echo different > Y/a
$ echo same > X/b
$ echo same > Y/b

我们有一个文件存在于一个目录中但不在另一个目录中,一个文件存在于两个目录中但不同,一个文件存在于两个目录中相同。

$ diff -r X Y
Only in X: 1
Only in Y: 2
diff -r X/a Y/a
1c1
< a file
---
> different
$ 

我们可以看到它报告了两个唯一的文件以及已更改的文件。不会报告相同的文件。

相关内容