1.刪除檔案命令:
find 對應目錄 -mtime +天數 -name "檔案名稱" -exec rm -rf {} \;
執行個體命令:
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
說明:
將/opt/soft/log/目錄下所有30天前帶".log"的檔案刪除。具體參數說明如下:
find:linux的尋找命令,使用者尋找指定條件的檔案;
/opt/soft/log/:想要進行清理的任意目錄;
-mtime:標準語句寫法;
+30:尋找30天前的檔案,這裡用數字代表天數;
"*.log":希望尋找的資料類型,"*.jpg"表示尋找副檔名為jpg的所有檔案,"*"表示尋找所有檔案,這個可以靈活運用,舉一反三;
-exec:固定寫法;
rm -rf:強制移除檔案,包括目錄;
{} \; :固定寫法,一對大括弧+空格+\+;
2.計劃任務:
若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行shell指令檔中,再設定cron調度執行,那就可以讓系統自動去清理相關檔案。
2.1建立shell:
touch /opt/soft/bin/auto-del-30-days-ago-log.sh
chmod +x auto-del-30-days-ago-log.sh
建立一個可執行檔auto-del-30-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 /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
ok,儲存退出(:wq)。
2.3計劃任務:
#crontab -e
將auto-del-30-days-ago-log.sh執行指令碼加入到系統計劃任務,到點自動執行
輸入:
10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1
這裡的設定是每天淩晨0點10分執行auto-del-7-days-ago-log.sh檔案進行資料清理任務了。