shell脚本:删除指定文件夹下的文件,保留最新的N个


生成测试数据脚本

点击查看代码
#!/bin/bash

#在对应文件夹下生成指定数量的文件夹
#参数 文件夹,需要新生成的文件夹个数
createDirs(){
	cd $1

	i=1
	while(( $i<=$2 ))
	do
		newDir="dir${i}"
	    echo $newDir
	    mkdir $newDir
	    let "i++"
	    sleep 1		#等一秒再生成下一个文件夹
	done

	ls -t
}


#待生成文件夹的根目录
dirsBasePathArr=("/shell/testdelfile/dirs" "/shell/testdelfile/dirs2")

for dir in ${dirsBasePathArr[*]}; do
	createDirs $dir 10
done


删除对应文件夹下的文件,保留文件修改时间最近的前N个脚本

点击查看代码
#!/bin/bash

#删除对应文件夹下的文件,保留文件修改时间最近的前N个
#参数:待删除文件夹,需要保留的个数
deleteFilesByDir(){
	fileIndex=1	#文件记录索引

	#按照创建时间从新到旧列出所有文件
	cd $1
	for file in `ls -t`
	do
		if [[ $fileIndex -gt $2 ]]; then
			echo $file' need delete'
			rm -rf $file
		else
			echo $file' no delete'
		fi
		
		let "fileIndex++"
	done
}



#待删除的文件夹目录
dirsBasePathArr=("/shell/testdelfile/dirs" "/shell/testdelfile/dirs2")

for dir in ${dirsBasePathArr[*]}; do
	deleteFilesByDir $dir 5
done


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM