我一直在使用此命令删除服务器上的旧备份:
find /backups/etcbak/ -mtime +7 -exec rm {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm {} \; 上面的命令可以很好地删除目标目录中的实际文件。
我的问题是:
如何使上面的命令也移除子目录?
(我添加了一个mysql备份脚本,它根据当前日期在目标目录中创建子目录)。
我试图按以下方式调整上面的命令:
find /backups/etcbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm -rf {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varmongobak/ -mtime +7 -exec rm -rf {} \;但是它根本不会删除旧的子目录。
目标是删除目标目录中可能存在的文件和目录。
例如:
/backups/etcbak/filename (where "filename" is deleted after 7 days)
和
/backups/etcbak/dirname (其中名为"dirname“的子目录及其内容在7天后也被删除)
有人知道怎么破解这个吗?thx
发布于 2022-06-12 09:45:52
我的方法是按照您的标准删除文件,然后删除空目录。
find /backups/etcbak /backups/varmysqlbak /backups/varmongobak -depth -type f -mtime +7 -delete
find /backups/varlogsbak -depth -type f -mtime +2 -delete
find /backups/etcbak /backups/varlogsbak /backups/varmysqlbak /backups/varmongobak -mindepth 1 -depth type d -delete 2>/dev/null严格地说,-depth并不是-delete所暗示的那样,但是我认为看到它并提醒它它是活动的是有用的。
https://unix.stackexchange.com/questions/705874
复制相似问题