Chinaunix

标题: 删除指定日期前的所有文件 [打印本页]

作者: msccao    时间: 2008-10-29 11:00
标题: 删除指定日期前的所有文件
假设某目录下大部分日志文件名字都像:***_2008-10-03.log   比如test_1x_2008-10-03.log
后面的部分都是有固定日期组成,即所有文件都是*_date.log格式,
目前所有文件已保存到vector<string>里面,有没有好的办法删除指定日期前的所有文件??
作者: 雨过白鹭洲    时间: 2008-10-29 11:06
遍历vector

取字符串后面固定子串,与当前日期比较,符合条件删除
作者: flw    时间: 2008-10-29 11:09
man find
或者选择 Perl。
作者: wblyfnj    时间: 2008-10-29 11:16
这个东西用c++来做干吗,脚本应该比较方便。
作者: RNW    时间: 2008-10-29 11:17
用Shell应该会比较方便吧
作者: Godbach    时间: 2008-10-29 11:56
恩,应该用shell处理就可以了
作者: msccao    时间: 2008-10-29 11:59
我找到了,用stat函数获得文件修改时间,进行删除
我知道用shell比较方便,但这里就想用程序实现,呵呵,谢谢各位的关注
作者: nicozhou    时间: 2008-10-29 12:01
原帖由 flw 于 2008-10-29 11:09 发表
man find
或者选择 Perl。


广告。
作者: gawk    时间: 2008-10-29 13:07
请用find
man find
作者: flw    时间: 2008-10-29 13:30
原帖由 nicozhou 于 2008-10-29 12:01 发表

广告。

随便你怎么想了。排斥新事物是许多人保护自己的一种方式。我可以理解。
作者: kairosnb    时间: 2008-10-29 14:22
Perl 好 Perl妙 Perl呱呱叫。

虽然我不会。。
作者: 5毛党党员    时间: 2008-10-29 14:27
原帖由 flw 于 2008-10-29 13:30 发表

随便你怎么想了。排斥新事物是许多人保护自己的一种方式。我可以理解。


广告又不是坏事。。。
作者: flw    时间: 2008-10-29 14:28
原帖由 5毛党党员 于 2008-10-29 14:27 发表

广告又不是坏事。。。

显然。
作者: nicozhou    时间: 2008-10-29 14:43
原帖由 flw 于 2008-10-29 13:30 发表

随便你怎么想了。排斥新事物是许多人保护自己的一种方式。我可以理解。



没有排斥啊,随便说说

我自己还在学perl啊
作者: 312-pirl0    时间: 2008-10-29 18:34
直接调用管道,使用rm *_data.log
作者: RNW    时间: 2008-10-30 09:41
原帖由 雨过白鹭洲 于 2008-10-29 11:06 发表
遍历vector

取字符串后面固定子串,与当前日期比较,符合条件删除


用这个就可以了啊,怎么还去用stat取文件修改时间啊
作者: msccao    时间: 2008-11-02 16:10
原帖由 312-pirl0 于 2008-10-29 18:34 发表
直接调用管道,使用rm *_data.log


我现在就是找不到一个好的函数删除,我用system函数执行mv操作,但是会引起其他线程的终止,
不知道有什么函数会好?

作者: samon_fu    时间: 2008-11-02 21:32
原帖由 msccao 于 2008-11-2 16:10 发表


我现在就是找不到一个好的函数删除,我用system函数执行mv操作,但是会引起其他线程的终止,
不知道有什么函数会好??



system执行rm或者mv会造成其他线程终止?你意思是在一个多线程环境下通过一个线程来做清理工作吧?

如果用C做,可以考虑看看readdir,utime。在UNIX环境高级编程的4.18~4.21有关于文件时间方面的详细讨论和代码实例。搞过来用吧。
作者: samon_fu    时间: 2008-11-02 21:33
标题: 最好还是用脚本做
通过在你的C代码里调脚本算了,你说的这个活用脚本是最适合的。
作者: msccao    时间: 2008-11-03 00:40
我这个是多线程的程序,用进程函数system或者execlp都不行,会对其它线程有影响。。。
谢谢各位朋友的关注,我的问题已经解决了,我用C函数rename和remove完成了我的需求。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2