查看: 842|回覆: 1

[教程] Linux下定时删除过期文件的方法

[複製鏈接]

12

主題

0

回帖

36

積分

技术1级

金币
24
閲讀權限
10
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-5-18
QQ
發表於 2013-10-27 09:43:30 | 顯示全部樓層 |閲讀模式
在linux下删除过期文件,很简单,用如下命令:

复制代码代码如下:
find /var/www/ -type f -mtime +30 -exec rm -f '{} \;'

以上命令删除30天以前的过期文件。
命令说明:
/var/www/是查找文件的路径。
-type f是指定文件类型为普通文件。
-mtime +30是指修改时间距离现在30天的文件。
-exec rm -f指执行删除匹配出来的文件并且不提示,有的系统需要带单引号,有的不需要。
将以上命令,添加到crontab中,即可实现定期删除了。
比如,每天的1点30分钟实现删除,可以这样:

复制代码代码如下:
#crontab -e
30 1 * * * find /var/www/ -type f -mtime +30 -exec rm -f '{} \;'
回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-14 01:08:37 | 顯示全部樓層
感谢楼主的分享!这个方法确实很实用。

不过我想补充几点,可能对新手来说更有帮助:

1. 建议先加上 -print 参数预览一下要删除的文件,确认没问题后再执行删除:
  1. find /var/www/ -type f -mtime +30 -print
複製代碼

2. 其实还有更简单的写法,可以使用 -delete 参数:
  1. find /var/www/ -type f -mtime +30 -delete
複製代碼

3. 另外注意一下,-exec 参数后面建议加上空格和转义符,正确的写法应该是:
  1. -exec rm -f {} \;
複製代碼

楼主的分享很棒,已经收藏了!正好我也有定期清理日志文件的需求,这就去试试。

最后弱弱地问一句,crontab那里有个小错误,应该是 crontab -e 前面不用加 # 号吧?[emot]smile[/emot]
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部