如何仅显示用 tar 提取的文件,而不显示未提取/未覆盖的文件?

如何仅显示用 tar 提取的文件,而不显示未提取/未覆盖的文件?

我正在使用 提取 tar 存档tar -xf /tmp/update.tar -C / -v --keep-newer-files。该-v选项是显示所有已处理的文件,该--keep-newer-files选项是自我解释的。

由于所有文件都已存在,我得到以下输出:

usr/local/bin/execstate.log
tar: Current ‘usr/local/bin/execstate.log’ is newer or same age
usr/local/bin/dblist.sh
tar: Current ‘usr/local/bin/dblist.sh’ is newer or same age
usr/local/bin/dbblacklist.sh
tar: Current ‘usr/local/bin/dbblacklist.sh’ is newer or same age

我知道,该--warning-no-ignore-newer选项会切换警告,但输出是:

usr/local/bin/execstate.log
usr/local/bin/dblist.sh
usr/local/bin/dbblacklist.sh

但这些文件都不会被提取!

我只想显示提取的文件(如果它们尚不存在)!

答案1

这可以使用以下方法完成star

star -C / -xv -nowarn < /tmp/update.tar

似乎gtar没有完全复制其中的功能star;-)

OSS 友好的 Linux 发行版有star二进制包,对于其他发行版,请在schilytools从以下位置获取最新的源存档后进行编译http://sourceforge.net/projects/schilytools/files/

当前的明星版本是 1.6.1。请注意,-nowarn仅提取存档中较新文件的选项和默认设置是从 1985 年开始的,这早在gtar开始之前就已存在。

请注意,由于 Linux 实现慢速文件系统,因此建议检查star选项的手册页-no-fsync。这允许您切换star到与您使用的一样不安全的模式gtar

相关内容