Chinaunix

标题: 如何删除前一天的类似文件名的Output文件 [打印本页]

作者: th0806    时间: 2010-10-13 10:54
标题: 如何删除前一天的类似文件名的Output文件
本帖最后由 th0806 于 2010-10-13 11:14 编辑

系统目前每天会产生100多个类似文件名的Output文件:

cost_fin_datafile2348
cost_fin_datafile7593
cost_fin_datafile4372
cost_fin_datafile9201
.........

我想每天删除(rm)前一天的这些文件,当天产生的保留,
请问如何实现?

最好能分两步实现:
1。 找到前一天符合条件的前一天的文件;
2。 然后再删除这些文件
作者: wtuter    时间: 2010-10-13 10:57
回复 1# th0806


    find ./ -name "cost_fin_datafile*"  -a -ctime 1 -exec rm -i {} \;
作者: where27    时间: 2010-10-13 11:02
回复 2# wtuter


    如果文件数量过多的话,可能会导致参数过长而报错吧?是不是用xargs会好点
作者: todayhero    时间: 2010-10-13 13:13
肯定xargs会好些!不会出现太长的报错.

find ./ -name "cost_fin_datafile*"  -a -ctime 1 | xargs rm -rf
作者: th0806    时间: 2010-10-13 13:19
肯定xargs会好些!不会出现太长的报错.

find ./ -name "cost_fin_datafile*"  -a -ctime 1 | xargs rm -r ...
todayhero 发表于 2010-10-13 13:13



如何分分两步实现?
1。 if 有找到符合条件的前一天的文件;
2。 then 再删除这些文件
作者: Shell_HAT    时间: 2010-10-13 13:41
回复 5# th0806


find命令就是这样做的
作者: todayhero    时间: 2010-10-13 13:45
find ./ -name "cost_fin_datafile*"  -a -ctime 1  > find_file

找到的文件放在find_file文件中


while read line
do
     rm -rf $line
done<find_file
将找到的文件查找!

不知你分两步做的目的是干什么?
作者: expert1    时间: 2010-10-13 13:49
找到就删,不需要两步走,一步到位了
作者: todayhero    时间: 2010-10-13 13:53
所以很搞不明白楼主的目的何在.为什么非要分两步!

要是分两步,那么两步的中间肯定还有其它的什么操作?楼主又没有说明.
作者: th0806    时间: 2010-10-13 13:57
哦,我的意思是想写一个if 的语句,
先判断是否找到了符合条件的文件
然后才删除这些文件。
作者: todayhero    时间: 2010-10-13 14:22
真给自己找难题!没有问题制作问题给自己!



if [ CONDITION ]
then
  rm -rf  xxxxxx
fi


CONDITION这一步没办法判断.还必须先找出文件,然后进行判断,还需要进行循环.
作者: lzlei007    时间: 2010-10-13 14:56
回复 10# th0806


    不用if判断啊,楼上的给出的答案就是如果找到类似的文件就删除,如果找不到就不删除。
作者: th0806    时间: 2010-10-13 15:32
本帖最后由 th0806 于 2010-10-13 18:26 编辑

OK, 明白了,谢谢!

find $OUTPUT_DIR -name "cost_fin_datafile*"  -a -ctime 1 | xargs rm -rf
作者: xiachunmen    时间: 2010-10-18 17:29
在 crontab里每天0点执行一次rm cost_fin_datafile* 行不行呢?




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