如何获得两个 tar.gz 之间的差异
How to get diff between two tar.gz
我有两个存档 1.tar.gz(包含 hello.txt)和 2.tar.gz(包含 hello.txt 和 helloworld.txt)。
我会得到这两个 tar.gz 之间的差异。输出应该是 helloworld.txt.
我试过这个命令:
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
这也有效:
$ 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
是一种从完整路径中获取文件名的快速方法。
我有两个存档 1.tar.gz(包含 hello.txt)和 2.tar.gz(包含 hello.txt 和 helloworld.txt)。
我会得到这两个 tar.gz 之间的差异。输出应该是 helloworld.txt.
我试过这个命令:
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
这也有效:
$ 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
是一种从完整路径中获取文件名的快速方法。