+ -
当前位置:首页 → 问答吧 → 一个shell编程问题

一个shell编程问题

时间:2010-10-27

来源:互联网

我有一个文件夹里面的内容增长太快,我想检测他的容量超过70%或者大于1G的时候就删除其中的一些文件。定时检测的任务我打算用crontab做(我会用).
目前就是不知道检查空间情况,然后删除文件的shell怎么写。

假设我有文件夹a,a目录下有c1,c2,c3,c4共4个文件。当我发现a的总大小大于1g了,我就删除c1,c2。这个shell怎么写?
环境:Solaris 9

作者: lrzvieri   发布时间: 2010-10-27

用du -sh a 来判断a的大小 如果超过1G 就rm-rf c1 c2

作者: steptodream   发布时间: 2010-10-27

C/C++ code

#!/bin/sh
if du -sh a | grep -qo "^[1-9]\{1,\}[|0-9.]\{0,\}G"
then
     rm-rf c1 c2
fi

作者: steptodream   发布时间: 2010-10-27

如果你的grep不支持-qo参数 那就用下面的
C/C++ code

#!/bin/sh
if du -sh a | grep "^[1-9]\{1,\}[|0-9.]\{0,\}G" >/dev/null
then
     rm-rf c1 c2
fi

作者: steptodream   发布时间: 2010-10-27

作者: KindHacker   发布时间: 2010-10-27

我来回复一下

作者: Dobzhansky   发布时间: 2010-10-27

哦 使用du -sh的话 开头会用空格 我再改 
sed 's/^[ ]\{0,\}//g'
C/C++ code

#!/bin/sh
if du -sh a | sed 's/^[ ]\{1,\}//g' | grep "^[1-9]\{1,\}[|0-9.]\{0,\}G" >/dev/null
then
     rm -rf c1 c2
fi

作者: steptodream   发布时间: 2010-10-27

我来回复一下

作者: sunlaji008   发布时间: 2010-10-27

热门下载

更多