![删除大文件夹中的旧文件](https://linux22.com/image/572705/%E5%88%A0%E9%99%A4%E5%A4%A7%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%97%A7%E6%96%87%E4%BB%B6.png)
我有一个包含许多文件的文件夹。我想删除超过 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 中,因为它听起来应该是自动化的。