![使用 tar 仅显示真正提取的(未跳过的)文件](https://linux22.com/image/148930/%E4%BD%BF%E7%94%A8%20tar%20%E4%BB%85%E6%98%BE%E7%A4%BA%E7%9C%9F%E6%AD%A3%E6%8F%90%E5%8F%96%E7%9A%84%EF%BC%88%E6%9C%AA%E8%B7%B3%E8%BF%87%E7%9A%84%EF%BC%89%E6%96%87%E4%BB%B6.png)
我正在提取每日备份档案。我只想查看自最后一天以来的新文件。档案包含许多已经存在的文件,我不想覆盖这些文件,所以我使用该--skip-old-files
选项,这很好。
但我想仅列出那些文件实际提取的并忽略那些被跳过的内容,因为它们已经存在。
例子:
我当前的命令是:
tar --verbose --skip-old-files --extract --file=2019-02-10.tar.gz
输出是(其中 file1 和 file2 已经存在,file3 是新的):
file1.zip
tar: file1.zip: skipping existing file
file2.zip
tar: file2.zip: skipping existing file
file3.zip
我只需要输出中的 file3.zip 。是否可以?
答案1
如果这是写入目录的唯一进程,那么您可以创建一个临时文件,不以详细模式提取文件,然后查看更改时间比临时文件更新的文件
例如
MYTMP=$(mktemp)
tar --skip-old-files --extract --file=2019-02-10.tar.gz
find . -cnewer $MYTMP
rm $MYTMP