【问题标题】:tar archive includes less files than the result of find commandtar 存档包含的文件少于 find 命令的结果
【发布时间】:2017-12-15 17:19:41
【问题描述】:

我运行以下命令: 找到 . -type f -name "*.xml" -mtime +30 | wc -l - 知道当前目录中有多少比 X 更早的文件。

现在我想解压它们,当我使用上面的命令加 | 创建存档时xargs tar -czvf archive_name.tar - 一切似乎都很好,但是..

现在我想知道最终存档中有多少文件,所以我运行另一个命令: tar -tvf archive_name.tar | wc -l - 我得到了大约 2K

问题是第一个 find 返回大约 6K 个文件。

怎么可能? (当前目录中没有其他目录)。

问候,

【问题讨论】:

    标签: linux find tar xargs


    【解决方案1】:

    进程的参数列表不是无限大的,因此 xargs 必须多次启动 tar 来处理它们。所以它相当于运行:

    tar -czvf archive_name.tar 1.xml 2.xml ...
    tar -czvf archive_name.tar a.xml b.xml ...
    tar -czvf archive_name.tar za.xml zb.xml ...
    

    最后一个 tar 实例将覆盖该文件。

    您可以通过附加到存档(开关 r)而不是创建来克服它:

    find . -type f -name "*.xml" -mtime +30 | xargs tar rvf archive_name.tar
    

    请注意,它会创建一个未压缩的存档,之后您可以使用 gzip 或其他方式对其进行压缩。

    【讨论】:

    • 嗨 Fat-Zer,假设 xargs 运行 tar 命令 3 次,存档中仍然应该有大约 6K 的文件,或者 - 是否只能从这 6K 中提取 2K?
    • @AbbyLockhart,实际上不是,最后一次执行 tar 只会覆盖存档。 [添加到答案中]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2017-05-29
    • 2014-06-12
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多