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