linux刪除舊文件只保留最新的10個


背景:

jenkins每日發布很多版本, 上傳的文件占用了linux大量磁盤空間, 久而久之, 空間不足,故需要定期清理系統舊版本文件。

1. 選定清理目標, 分析目標文件列表

清理前:

文件夾列表查詢:

ll st-www/

 

 

 可見文件列表是固定前綴"st-www.", 后面跟着的是版本號, 最大的版本號86就是最新的版本。

我只需要保留最新的10個版本,其他的刪除。

2. Shell腳本編寫clean.disk.sh

#!/bin/sh
#計數
param=$(echo $1)
echo $param
filename=$(echo "${param}.*")
echo $filename
counts=$(find . -name "$filename"|sort -t"." -k3n|head -n -10|wc -l)
echo "=========  $1 待刪除文件數: $counts==========="
if [ $counts -gt 0 ]; then
find . -name "$filename"|sort -t"." -k3n|head -n -10|xargs rm -rf
echo "=========  $1 刪除完畢 ========="
fi

 

3. 調用方法:

./clean-disk.sh st-www

4. 執行后,結果只剩10條最新的,說明已經OK:

 

 

5. 代碼解析:

(1)find . -name "$filename" 的查詢結果為:

(2)sort -t"." -k3n 表示對find的查詢結果進行"."分列后, 得到三列, 取第三列(第三列就是版本號)進行數字升序排序

(3)head -n -10 對排序后的結果從頭開始截取除后10條的所有記錄

(4)xargs rm -rf 對這些文件記錄進行刪除

 

 

完畢~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM