删除大文件夹中的旧文件

删除大文件夹中的旧文件

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

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

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

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

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

答案1

在会话中运行它screen。这样,当 Putty 断开连接时,作业仍在服务器上运行。只需重新连接并screen -r重新连接屏幕会话即可查看进度。

答案2

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

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

然后cat nohup.out密切关注输出。

答案3

你可以做类似的事情:

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

如果文件名相当“普通”(没有空格、特殊字符等)并且很短,则此方法可行。

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

答案4

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

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

或者,将其放入 cron 中,因为它听起来应该是自动化的。

相关内容