首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于删除超过n天的目录的Shell脚本

用于删除超过n天的目录的Shell脚本
EN

Stack Overflow用户
提问于 2012-12-14 05:30:19
回答 3查看 275.1K关注 0票数 192

我的目录命名为:

代码语言:javascript
复制
2012-12-12
2012-10-12
2012-08-08

如何使用bash shell脚本删除超过10天的目录?

EN

回答 3

Stack Overflow用户

发布于 2016-05-10 16:45:12

find支持-delete操作,因此:

代码语言:javascript
复制
find /base/dir/* -ctime +10 -delete;

我认为有一个问题,那就是这些文件也需要是10+几天前的。没有尝试过,有人可能会在评论中确认。

这里投票最多的解决方案是缺少-maxdepth 0,因此在删除每个子目录后,它将对每个子目录调用rm -rf。这不合理,所以我建议:

代码语言:javascript
复制
find /base/dir/* -maxdepth 0  -type d -ctime +10 -exec rm -rf {} \;

上面的-delete解决方案没有使用-maxdepth 0,因为find会抱怨目录不为空。相反,它暗示了-depth和自下而上的删除。

票数 26
EN

Stack Overflow用户

发布于 2014-02-20 19:21:34

我正在努力使用上面提供的脚本和其他一些脚本来解决这个问题,特别是当文件和文件夹名称包含换行符或空格时。

最后偶然发现了tmpreaper,到目前为止,它对我们来说工作得很好。

代码语言:javascript
复制
tmpreaper -t 5d ~/Downloads


tmpreaper  --protect '*.c' -t 5h ~/my_prg

原始源link

有像test这样的特性,它可以递归地检查目录并列出它们。能够在删除时删除符号链接、文件或目录以及特定模式的保护模式

票数 3
EN

Stack Overflow用户

发布于 2014-07-31 19:10:17

代码语言:javascript
复制
rm -rf `find /path/to/base/dir/* -type d -mtime +10`

更新、更快的版本:

代码语言:javascript
复制
find /path/to/base/dir/* -mtime +10 -print0 | xargs -0 rm -f
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13868821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档