tar 存档包含的文件少于查找命令的结果

tar archive includes less files than the result of find command

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

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

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

问题是首先找到returns关于6K个文件。

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

此致,

一个进程的参数列表不是无限大的,所以 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 或其他方式压缩它。