linux下用shell刪除三天前或者三天內的文件

說明:+n 大於 n, -n 小於 n, n 相等於 n.

find / -amin -30 -ls # 查找在系統中最後30分鐘訪問的文件
find / -atime -2 -ls # 查找在系統中最後48小時訪問的文件
find / -mmin -10 -ls # 查找在系統中最後10分鐘裏修改過的文件
find / -mtime -1 -ls # 查找在系統中最後24小時裏修改過的文件
find / -cmin -10 -ls # 查找在系統中最後10分鐘裏被改變狀態的文件
find / -ctime -1 -ls # 查找在系統中最後24小時裏被改變狀態的文件

# 刪除tmp目錄下3天前所有子文件,如果不帶*,則會幹掉此非空目錄
/usr/bin/find /data/htdocs/test.cn/data/tmp/* -mtime +3 -ls

[正常情況下:atime 與 mtime所找到的文件個數是相等的]

shell腳本舉例:

文件名: test.sh

內容如下:

# 刪除三天前,遺留的dump文件

day=$(/bin/date +%Y-%m-%d);
count=`/usr/bin/find /data/htdocs/test.cn/data/tmp/* -mtime +3 | wc -l`;
/usr/bin/find /data/htdocs/test.cn/data/tmp/* -mtime +3 -delete;
echo $day – $count;

#刪除10天前的所有文件

find /tmp/* -type f -mtime +10 -exec rm {} \;

#查找10天前的所有文件

find /tmp/* -type f -mtime +10 -exec ls -l {} \;

可以配合腳本命令,定時自動刪除安卓QQ的15天前的圖片緩存

find /sdcard/tencent/*/*/.photo/* -type f -mtime +15 -exec rm {} \;

其中{} \;的意思是:

{}就是前面找到的文件名稱
\; 的原因是因爲find命令要以一個”;“作結尾,但爲了不讓”;“被shell誤解所以加了一個轉義字符"\"

轉載http://www.cnblogs.com/chen-lhx/p/6015421.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章