tar archive包含的文件少于find命令的结果

时间:2017-12-15 17:19:42

标签: linux find tar xargs

我运行以下命令: 找到。 -type f -name&#34; *。xml&#34; -mtime +30 | wc -l <​​/ strong> - 知道当前目录中有多少比X更早的文件。

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

现在我想知道最终档案中有多少文件,所以我运行另一个命令: tar -tvf archive_name.tar | wc -l <​​/ strong> - 我得到 2K

问题是首先查找会返回 6K 文件。

怎么会这样? (当前目录中没有其他目录)。

此致

1 个答案:

答案 0 :(得分:0)

进程的参数列表不是无限大小的,因此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或其他方法将其压缩。