删除所有超过60天的目录及其文件,无论该目录是否为空

  • 本文关键字:是否 文件 60天 删除 linux bash shell ubuntu
  • 更新时间 :
  • 英文 :


我正在尝试删除/mnt/games/codes中所有早于60天的目录。这些目录可能是空的,也可能不是,但我希望它们都被删除。

所以看着这里,我发现了这个命令:

find /mnt/games/codes/* -mtime +60 -type d -exec rm -rf {} ;

但它给了我一个错误:

没有这样的文件或目录

所以我尝试了这个:

find /mnt/games/codes/* -mtime +60 -type d -exec rmdir {} ;

但它给了我一个全新的错误,看起来像这样:

目录不是空

有没有办法用一个命令删除这些?

谢谢!

您的问题是因为find在迭代完搜索基目录之前就删除了这些目录,所以对已经删除的条目调用rm -rf

通过添加-depth选项可以很容易地解决此问题。

此外,您确实应该用双破折号--结束rm选项,以防止find命令提供的参数被rm命令解释为选项参数。

find /mnt/games/codes/ -depth -mtime '+60' -type d -exec rm -rf -- {} ;

以下操作之所以有效,是因为它先查找,然后通过管道传输到xargs。我相信这将阻止";arg列表太长";当你有很多东西要找的时候,问题也会随之而来。

find /mnt/games/codes/* -mtime -60 -type d | xargs rm -rf

相关内容

  • 没有找到相关文章

最新更新