我运行以下命令: 找到。 -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 文件。
怎么会这样? (当前目录中没有其他目录)。
此致
答案 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或其他方法将其压缩。