shell命令删除历史文件,仅保持最新的三个文件

409 阅读1分钟
tarFolder='tar'

#保留文件数
ReservedNum=2
FileDir=./$tarFolder
date=$(date "+%Y%m%d-%H%M%S")
# 获取副本数量
FileNum=$(ls -l $FileDir | grep ^- | wc -l)
env="prod"

# 统计当前文件夹下文件的个数
# 只保留PROD下副本数量为最新的 3个
if [ -n $1 ] && [ "$1" == "$env" ] && [ -d $tarFolder ]; then
	echo '---prod---'
	while (($FileNum > $ReservedNum)); do
		OldFile=$(ls -rt $FileDir | head -1)
		echo $date "Delete File:"$OldFile
		rm -rf $FileDir/$OldFile
		let "FileNum--"
	done
else
	echo '---dev---'
fi

结果如下: