免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8198 | 回复: 16
打印 上一主题 下一主题

如何获取压缩文件内的文件名 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-01 11:32 |只看该作者 |倒序浏览
最近遇到一个问题,从网上找了很久也没有找到好的觉得办法。所以上来问问。

上传文件到LINUX中的某个目录下面。文件类型为  abc.tar.gz  这个压缩包内有几个文件。
压缩包内的文件名中包含我需要的时间。所以我得想办法得到他。我的前辈实现的方式是先
把压缩包解压,然后取到文件名,再重新压缩起来。功能是实现了。可是我觉得貌似效率有点低
我想到的办法是不解压文件,直接获取压缩文件内的文件名,然后用这个名字直接修改压缩包的
名字,这样就避免了解压和重新压缩的操作。

目前遇到的问题是LINUX下是否有办法在不解压文件的时候也能或许到压缩包内的文件的名字
我查不到类似的资料。最好是能用C去获取,有没有那位知道的? 先谢谢各位了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-09-01 11:35 |只看该作者
tar ztf abc.tar.gz

论坛徽章:
0
3 [报告]
发表于 2008-09-01 11:36 |只看该作者
man tar

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-09-01 11:41 |只看该作者
其实我觉得你应该研究一下生成 abc.tar.gz 的那个程序,
看有没有什么配置项可以直接生成 abc.20080901.tar.gz。

论坛徽章:
0
5 [报告]
发表于 2008-09-01 11:42 |只看该作者
tar tvf filename.tar

论坛徽章:
0
6 [报告]
发表于 2008-09-01 12:02 |只看该作者
原帖由 flw 于 2008-9-1 11:35 发表
tar ztf abc.tar.gz

这个是可以啊~~~
但是用C的SYSTEM()函数是不是无法接到返回值啊 不知道有没有TAR函数 找找看去。

论坛徽章:
0
7 [报告]
发表于 2008-09-01 12:04 |只看该作者
原帖由 flw 于 2008-9-1 11:41 发表
其实我觉得你应该研究一下生成 abc.tar.gz 的那个程序,
看有没有什么配置项可以直接生成 abc.20080901.tar.gz。

我这边生成文件是很规矩的,可是还得考虑别人导入文件时修改了文件名,所以只有获取压缩文件里面的文件的时间才是最准确的。

如果是用SHELL写,估计就容易了。可惜只能用C 郁闷....

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2008-09-01 12:10 |只看该作者
原帖由 No.6 于 2008-9-1 12:04 发表

我这边生成文件是很规矩的,可是还得考虑别人导入文件时修改了文件名,所以只有获取压缩文件里面的文件的时间才是最准确的。

如果是用SHELL写,估计就容易了。可惜只能用C 郁闷....

嗯,用 shell 写拿不到奖金,一定要用 C 写,要把项目做大,最好就像你前辈那样——这下你知道你前辈是多么的聪明睿智了吧?
先用 C 解压,再拿出文件名来,然后再重新压缩,这样今年的奖金就有着落了。

不过你可以和你上司说,你前辈这样的做法,成本很高,性能很差,复用性等于 0。
你应该实现一个通用的 tar 函数,不仅仅可以获取文件名日期的,还可以获取文件内容第一行的,
还得写 374 个 unit test 以保证 tar 模块的质量,
这样将来的项目中如果有类似的需求就可以直接拿过来用。

好好干,今年的奖金就全靠这个 task 了。

[ 本帖最后由 flw 于 2008-9-1 12:12 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2008-09-01 12:16 |只看该作者
嗯,因为时间紧,任务急,因此你还可以向公司申请一笔加班费,包括打车住宿餐补等相关费用。
如果是在外地出差的话,还可以申请探亲费用,嗯,就应该这样,千万别 tar ztf abc.tar.gz

论坛徽章:
0
10 [报告]
发表于 2008-09-01 12:27 |只看该作者
原帖由 flw 于 2008-9-1 12:10 发表

嗯,用 shell 写拿不到奖金,一定要用 C 写,要把项目做大,最好就像你前辈那样——这下你知道你前辈是多么的聪明睿智了吧?
先用 C 解压,再拿出文件名来,然后再重新压缩,这样今年的奖金就有着落了。

...

受教育了~~~ 不过我之前试了一个比较野蛮的办法,就是直接用VI去打开压缩文件,发现里面第一行从开始就是一个我想要的文件的文件名,
接着又打开了几个类似的压缩包,结果发现都是一样的。 太诡异了,难道老天开眼了!

提起我公司那前辈我就上火啊,从我进公司前辈就离开了,从此我就走上了修改他的BUG之路。各种各样的错误。

不过貌似你说这个还真是一个解决办法,反正手头没事,可以试试自己写一个tar函数  不知我这小本的学历是否够用 查资料去了~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP