如何在两个tar.gz之间获得差异

时间:2016-12-10 09:57:46

标签: bash debian tar

我有两个存档1.tar.gz(包含hello.txt)和2.tar.gz(包含hello.txt和helloworld.txt)。

我会在这两个tar.gz之间得到差异。输出应该是helloworld.txt。

我已尝试使用tis命令:

diff <(tar -tvf 1.tar.gz | sort) <(tar -tvf 2.tar.gz | sort) 

但输出错误。我得到了这个结果:

< drwxr-xr-x user/user         0 2016-12-09 23:29 1/
< -rw-r--r-- user/user       344 2016-12-09 23:29 1/hello.txt.gpg
---
> drwxr-xr-x user/user         0 2016-12-09 23:27 2/
> -rw-r--r-- user/user       344 2016-12-09 23:27 2/hello.txt.gpg
> -rw-r--r-- user/user       363 2016-12-09 23:27 2/helloworld.txt.gpg

1 个答案:

答案 0 :(得分:2)

这也有效:

$ diff <(tar -tvf 1.tar.gz | rev | cut -d\/ -f1 | rev) <(tar -tvf 2.tar.gz | rev | cut -d\/ -f1 | rev)
1a2
> helloworld.txt.gpg

进一步解释:

以下内容:| rev | cur -d\/ -f1 | rev是一种从完整路径中获取文件名的快捷方法。