使用 GNU tar,当我这样做时tar df books.tar.bz2
,我可能会得到以下详细结果:
books/a.pdf: Mod time differs
books/a.pdf: Size differs
books/b.pdf: Mod time differs
books/b.pdf: Size differs
有没有什么方便的方法来获得以下输出?
a.pdf b.pdf
原因很简单,我想使用 的输出tar df ...
来创建另一个仅包含已更改文件的存档,例如,使用gtar cfvj books-updated.tar.bz2 a.pdf b.pdf
.
答案1
您可以使用这样的组合:
tar -df archive.tar | awk -F: '{print $1}' | sort -u
tar -df
获取更改的文件(你已经有了)
awk -F: '{print $1}'
仅打印第一“列”
sort -u
删除重复项
编辑:按照@roaima的输入,如果您需要匹配名称中本身包含冒号(或空格)的文件,您可以用awk
这个替换部分
sed 's/\(.*\):.*/\1/'
这将有效地仅显示文件名,直到最后一次出现冒号(位于第一列的末尾)
答案2
你看了吗star
?
你可以使用:
star -diff -tpath < archive.tar
该选项-tpath
会带来不同。
star 的最新版本位于 schilytools 中。