对于大批量的文件如果要tar的话,是不能直接:tar -cvf a.tar * 的,因为* 扩展开来太大了,会出现参数太长的错误,一般来讲这种问题都通过xargs命令来解决,如:
ls * | xargs tar -rvf a.tar
注意:
1. 这里用到了tar命令的选项 -r ,是append的意思,但是如果tar文件不存在,也有create的作用
2. -r 选项不能和 -z 选项同时使用,所以需要压缩的话,都tar完之后再gzip
如果不知道 -r 选项,当然还可以 把所有要tar的文件mv到一个新的目录,还得用到xargs命令,不过这时就有点问题了,如:
ls * | xargs mv source target
因为一般情况下我们使用mv时,目标是最后一个参数,所以用xargs传参就有些不合适,但是我man mv 发现可以用选项指定目的地,可以这样写:
ls * | xargs mv –target-directory=/newdir/
然后:tar -zcvf a.tar /newdir
注: 这里的ls * 仅代表数据源的意思,不要直译,可能是find ….或 grep .. 等