2
$ find /tmp/a1
/tmp/a1
/tmp/a1/b2
/tmp/a1/b1
/tmp/a1/b1/x1

只是尝试

find /tmp/a1 -exec tar -cvf dirall.tar {} \;

根本行不通

任何帮助

4

4 回答 4

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.

于 2010-06-02T14:20:50.900 回答
1

你离解决方案只有一个角色。该find命令的exec选项将为找到的每个文件执行该命令,因此您应该替换-c-rtar进入附加模式。每次find调用它,它都会附加一个文件:

rm -f dirall.tar
find /tmp/a1 -exec tar -rvf dirall.tar {} \;
于 2010-06-02T16:23:11.657 回答
0

hpux 有 cpio 吗?这将获取标准输入上的文件列表,并且某些版本将以 tar 格式写入输出。

于 2010-06-02T14:48:53.517 回答
0

我认为像“find /tmp/a1 | xargs tar cvf foo.tar”这样的东西会起作用。但请确保您首先有备份!

于 2010-06-02T14:21:51.573 回答