tar diff:仅获取文件名

tar diff:仅获取文件名

使用 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 中。

相关内容