免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15769 | 回复: 11

请教shell达人,关于find与xargs配合并使用tar命令的问题 [复制链接]

论坛徽章:
0
发表于 2009-08-10 11:33 |显示全部楼层
我想一次性打包 2W个 jpg文件 用了如下两个命令

find . -name "*.jpg" -exec tar -czf picture.tgz {} \;    命令执行完毕后,picture.tgz中只有一个文件

find . -name "*.jpg" | xargs tar -czf picture.tgz        这个命令执行完毕后,picture.tgz中只有907个文件。

以上两个命令都没有成功,我决定问题出在:

第一个命令中,find把找到的2w个文件一次性传送给tar ,此时参数太长导致打包失败,但是执行命令时又没有出现“参数列表过长”的错误信息;

第二个命令中,xargs把find匹配的文件分批传送给tar,但是tar每处理一次都把上一次生成的picture.tgz文件覆盖,导致最后picture.tgz中只有907个文件;

期待达人为我解决一下

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-08-10 11:54 |显示全部楼层
用-r代替tar命令的-c选项试试?

论坛徽章:
0
发表于 2009-08-10 12:00 |显示全部楼层

回复 #2 Minsic 的帖子

不行呢,会提示 因信号6而终止

首先肯定得用-c 把包打出来,然后才能-r追加,而且好像有-z已经压缩后,就不能-r追加了

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-08-10 12:05 |显示全部楼层

回复 #3 angellp0128 的帖子

哦,没文件也会创建的,应该是-z选项阻止了

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2009-08-10 12:13 |显示全部楼层
先打包,再压缩

论坛徽章:
0
发表于 2009-08-10 12:21 |显示全部楼层

回复 #4 Minsic 的帖子

经过你的提示,我初步解决了这个问题

先用find . -name "*.jpg" | xargs tar -rf picture.tgz  命令打包

然后用gzip命令把打出的包压缩

还有更简单的方法吗 大家帮忙想一下吧~

论坛徽章:
0
发表于 2009-08-10 12:22 |显示全部楼层

回复 #5 blackold 的帖子

恩,刚才我就这样做的

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2009-08-10 12:24 |显示全部楼层

回复 #7 angellp0128 的帖子

有时间你可以看看tar文档,就知道有没有更简单的方法了。

论坛徽章:
0
发表于 2009-08-10 13:55 |显示全部楼层
这个和Shell没太大关系吧?我想你刚好想反了,对于find来说-exec是每找到一个满足的就调用一次后面的程序,所以你最后只有一个文件,因为tar的c命令是重新创建的;倒是xargs应该是你说的参数太多原因,能支持的一个命令中带的文件名应该是有限的。

自己写一个程序应该很容易测试出来吧。

论坛徽章:
0
发表于 2009-08-10 14:30 |显示全部楼层
find . -name "*.jpg" -print >list
tar -T list -czvf picture.tar.gz
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP