日常工作中需要在Linux系统中写一个shell脚本,实现自动删除某一目录下文件,只保留最新的5个或多个文件的需求,特编写此shell脚本:
文件名:file_reten_five.sh
文件所在路径:FileDir参数的值
保留文件名:{test,abc}中的值,分别以test和abc开头,以.log为结尾的文件,例如test20240810.log和abc20240810.log,具体以实际为准
保留文件数:ReservedNum参数的值
#!/bin/bash
############################
#删除某一目录下文件,只保留最新的5个
############################
#保留文件数及文件所在目录
ReservedNum=5
FileDir=/home/oracle
for i in {test,abc}
do
#按文件特征进行分类,显示文件数量
FileNum=$(ls -l $FileDir/$i*.log | grep ^- |wc -l)
while(( FileNum > ReservedNum))
do
#显示待删除的旧文件名
OldFile=$(ls -rt $FileDir/$i*.log | head -1)
echo "Delete File:" $OldFile
rm -f $OldFile
let "FileNum--"
done
done