#!/bin/sh
#need_delete_size 要删除的文件的阈值大小 单位K
#没有指定文件夹 默认是当前文件夹下
need_delete_size=60000
while [ 1 ]
do
file_size=$(du -sBK ./ | awk "{print $1}")
echo "file size is ==> ${file_size}"
file_size=$(echo ${file_size/K/})
file_size_number=`echo $file_size | tr -cd "[0-9]"`
if [ ${file_size_number} -lt ${need_delete_size} ]
then
echo "There are no files to delete ==> "
break
fi
echo "file size gt ==> ${need_delete_size}K need delete"
echo "file name is ==>" ls -ltr | grep "^d" | awk '{print $9}' | head -1
ls -ltr | grep "^d" | awk '{print $9}' | head -1| xargs rm -rf
echo "delete success ==>"
done
参考:
https://www.cnblogs.com/aaronLinux/p/7074725.html
https://www.cnblogs.com/xiaojianblogs/p/8242443.html
再做修改 支持参数
#!/bin/sh
#need_delete_size 要删除的文件的阈值大小 单位K 必传参数
#file_path为指定文件夹路径 必传参数
file_path=$1
need_delete_size=$2
expr ${need_delete_size} "+" 1 &> /dev/null
if [ $# -le 1 ]; then
echo "shell need two params"
exit 1
elif [ ! -d ${file_path} ]; then
echo "shell The first params should be path"
exit 1
elif [ ${need_delete_size} -lt 1 ]; then
echo "shell The second params should be number"
exit 1
else
cd ${file_path}
while [ 1 ]
sleep 3
do
file_size=$(du -sBK ./ | awk "{print }")
file_size=$(echo $file_size/K/)
file_size_number=`echo $file_size | tr -cd "[0-9]"`
if [ ${file_size_number} -lt ${need_delete_size} ]
then
echo "file size ${file_size_number}K <= ${need_delete_size}K There are no files to delete over ..."
break
fi
echo "file size ${file_size_number}K > need_delete_size ${need_delete_size}K need delete"
ls -ltr | grep "^d" | awk '{print $9}' | head -1| xargs rm -rf
echo "delete success ..."
done
fi