我们使用 AIX 服务器将成千上万个小文件存放在嵌套目录结构中。我正在尝试编写一个脚本,该脚本将递归删除旧文件,然后删除包含目录(如果这是目录中的最后一个文件)。
为了举例说明,我们假设任何超过 60 天的文件都是“旧”的。
听起来很简单,但我找了好久也没找到解决办法。有没有find
和它的标志的组合,也许用管道连接起来rmdir
就能实现上述功能?
答案1
您说您使用的是 AIX。如果我没记错的话,我认为基本的 shell 命令就可以解决问题。
find /path/to/files* -mtime +60 -exec rm {} \;
find /path/to/files -type d -exec rmdir 2>/dev/null {} \;
答案2
如果您将“早于”定义为修改时间超过 60 天,则以下命令将删除您的旧文件:
find /your/dir -mtime +60 -exec rm -f {} \;
要修剪空目录,您可以使用以下命令:
find /your/dir -type d -exec rmdir {} \;
它并没有准确地找到空目录,但由于 rmdir 不会删除包含文件的目录,因此它只会删除空目录。
答案3
我认为你可以将这两个命令合并为一个:
find /your/dir -type f -mtime +60 -delete -or -type d -empty -delete
注:-delete
暗示-depth
。