我如何递归删除旧文件并修剪产生的空目录?

我如何递归删除旧文件并修剪产生的空目录?

我们使用 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

相关内容