以特定時間點為基準刪除老舊目錄

今天因為某些原因,得刪除特定目錄底下,太老舊的一些目錄。目錄數量有上百個,一個個刪實在令人難過,身為一個 Linux user,就該善用工具來解決這個問題!

這篇是個簡單的速記,就不囉唆。只要使用以下指令即可:

$ find * -maxdepth 0 -mtime +365 -exec rm -r {} \;

其中幾個重點說明如下:

  1. 使用 find 可以找出符合特定條件的檔案並對該檔案做點事情(下指令)
  2. -maxdepth 是用來限制 find 往下搜尋的層數,由於我僅針對此目錄下的所有目錄做處理,故僅使用 find * -maxdepth 0
  3. -mtime 是針對 modified time 做限制,後面接 +n 表示「早於 n 天前修改的檔案(比 n 天還舊)」,若是接上 -n 則表示「晚於 n 天前修改的檔案(比 n 天還新)」。類似的選項還有 atime, amin, ctime, cmin, mmin。可自行查看 manpage。值得注意的是,manpage 中是以「n*24 hours」來說明,不曉得是否有何特殊之處?
  4. -exec 則是針對找到的檔案進行動作,後面接上要執行的指令,並以 {} 代表找到的檔案,結尾並加上 \; 即可。

網路上找到的通常會是刪除「老舊檔案」而非目錄,以下亦附上參考用法。

$ find . -mtime +365 -exec rm {} \;

祝各位刪檔愉快(笑)。


Last modified on 2012-01-09