$ find /tmp/a1
/tmp/a1
/tmp/a1/b2
/tmp/a1/b1
/tmp/a1/b1/x1
只需尝试
find /tmp/a1 -exec tar -cvf dirall.tar {} \;
根本不起作用
任何帮助
答案 0 :(得分:3)
为找到的每个文件运行一次为-exec
指定的命令。因此,每次运行命令时都会重新创建dirall.tar。相反,您应该将find的输出传递给tar。
find /tmp/a1 -print0 | tar --null -T- -cvf dirall.tar
请注意,如果您只是使用find
获取/tmp/a1
下的所有文件的列表而不进行任何类型的过滤,则使用tar -cvf dirall.tar /tmp/a1
会更加简单。< / p>
答案 1 :(得分:1)
你离解决方案只有一个角色。 find
命令的exec
选项将执行找到每个文件的命令,因此您应将-c
替换为-r
以放置tar
进入附加模式。每次find
调用它时,它都会再添加一个文件:
rm -f dirall.tar
find /tmp/a1 -exec tar -rvf dirall.tar {} \;
答案 2 :(得分:0)
我认为像“find / tmp / a1 | xargs tar cvf foo.tar”这样的东西会起作用。但请确保先备份备份!
答案 3 :(得分:0)
hpux有cpio吗? 这将获取stdin和某些版本的文件列表 将以tar格式写出输出。