[SHELL] 用find刪除大於45天的檔
1.刪除檔命令:
find 對應目錄 -mtime +天數 -name "檔案名" -exec rm -rf {} \;
實例命令:
find /home/F5/jenkins/ -mtime +45 -name "*-log-file" -exec rm -rf {} \;
說明:
將/home/F5/jenkins/目錄下所有45天前帶".log"的檔刪除。具體參數說明如下:
find:linux的查找命令,用戶查找指定條件的檔;
/home/F5/jenkins/:想要進行清理的任意目錄;
-mtime:標準語句寫法;
+45:查找45天前的檔,這裡用數字代表天數;
"*-log-file":希望查找的資料類型,"*.jpg"表示查找副檔名為jpg的所有檔,"*"表示查找所有檔,這個可以靈活運用,舉一反三;
-exec:固定寫法;
rm -rf:強制刪除檔,包括目錄;
{} \; :固定寫法,一對大括弧+空格+\+;
2.計畫任務:
若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行shell腳本檔中,再設置cron調度執行,那就可以讓系統自動去清理相關檔。
2.1創建shell:
touch /opt/soft/bin/auto-del-45-days-ago-log.sh
chmod +x auto-del-45-days-ago-log.sh
新建一個可執行檔auto-del-45-days-ago-log.sh,並分配可運行許可權
2.2編輯shell腳本:
vi auto-del-30-days-ago-log.sh
編輯auto-del-30-days-ago-log.sh文件如下:
#!/bin/sh
find /home/F5/jenkins/ -mtime +45 -name "*-log-file" -exec rm -rf {} \;
ok,保存退出(:wq)。
2.3計畫任務:
#crontab -e
將auto-del-30-days-ago-log.sh執行腳本加入到系統計畫任務,到點自動執行
輸入:
10 0 * * * /home/F5/jenkins/auto-del-45-days-ago-log.sh >/dev/null 2>&1
這裡的設置是每天淩晨0點10分執行auto-del-45-days-ago-log.sh檔進行資料清理任務了。
沒有留言:
張貼留言