删除大文件夹中的旧文件

我有一个包含许多文件的文件夹。 我想删除超过30天的文件,所以我使用下面的命令:

find cache/ -mtime +30 -exec rm {} \; 

但是,我的SSH会话在命令完成之前断开连接。

如何限制一次删除的文件数量? 例如:

 find cache/ -mtime +30 -LIMIT 10000 -exec rm {} \; 

screen会话中运行它。 这样当腻子断开作业仍然在服务器上运行。 只需重新连接并使用screen -r重新连接屏幕会话以查看进度。

您也可以使用nohup运行命令,如下所示:

 nohup find cache/ -mtime +30 -exec rm {} \; & 

然后cat nohup.out注意输出。

你可以做这样的事情:

 find cache/ -mtime +30 | head -n 10000 | xargs rm 

这将工作,如果文件名是相当“香草”(没有空格,特殊字符等)和短。

但是,如果您宁愿等待您的原始命令完成,您可以告诉PuTTY每隔一段时间发送一次SSH Keepalive消息; 有关详细信息,请参阅PuTTY文档 。 我通常在45-60秒之间使用一个值,我自己。

 find cache/ -mtime +30 -print0 | xargs -0 rm -v 

然后它会输出每个被删除的文件,这应该防止你的会话超时。

或者,把它放在cron中,因为它听起来应该是自动的。