Linux shell命令 批量删除子目录下的文件,保留指定数量的最新文件

#!/bin/bash

#保留文件数
ReservedNum=2
#要删除文件的,父级目录
FileDir=/usr/docker/springCloud/project/

#循环子目录列表
for element in `ls $FileDir`
do
    # 拼接成完成目录 (父目录路径/子目录名)
    dir_or_file=$FileDir$element
    # 获取子目录下的指定文件格式的总数量
    FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
    # 输出 删除前的 指定格式的文件数量
    echo  $element "jar num:" $FileNum
    # 如果 数量大于保留数量,那就循环删除 文件
    while(( $FileNum > $ReservedNum))
    do
       OldFile=$(ls -rt $dir_or_file | grep 'keda-'| head -1)
       echo  $element "Delete jar:"$OldFile
       rm -rf $dir_or_file/$OldFile
       let "FileNum--"
    done
done

# 删除完后,再循环输出一下 每个子目录下的文件数量
for element in `ls $FileDir`
do
    dir_or_file=$FileDir$element
    FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
    echo  $element "jar num:" $FileNum
done

 

你可能感兴趣的:(linux,shell)