我的目录命名为:
2012-12-12
2012-10-12
2012-08-08
如何使用bash shell脚本删除超过10天的目录?
发布于 2016-05-10 16:45:12
find
支持-delete
操作,因此:
find /base/dir/* -ctime +10 -delete;
我认为有一个问题,那就是这些文件也需要是10+几天前的。没有尝试过,有人可能会在评论中确认。
这里投票最多的解决方案是缺少-maxdepth 0
,因此在删除每个子目录后,它将对每个子目录调用rm -rf
。这不合理,所以我建议:
find /base/dir/* -maxdepth 0 -type d -ctime +10 -exec rm -rf {} \;
上面的-delete
解决方案没有使用-maxdepth 0
,因为find
会抱怨目录不为空。相反,它暗示了-depth
和自下而上的删除。
发布于 2014-02-20 19:21:34
我正在努力使用上面提供的脚本和其他一些脚本来解决这个问题,特别是当文件和文件夹名称包含换行符或空格时。
最后偶然发现了tmpreaper,到目前为止,它对我们来说工作得很好。
tmpreaper -t 5d ~/Downloads
tmpreaper --protect '*.c' -t 5h ~/my_prg
原始源link
有像test这样的特性,它可以递归地检查目录并列出它们。能够在删除时删除符号链接、文件或目录以及特定模式的保护模式
发布于 2014-07-31 19:10:17
或
rm -rf `find /path/to/base/dir/* -type d -mtime +10`
更新、更快的版本:
find /path/to/base/dir/* -mtime +10 -print0 | xargs -0 rm -f
https://stackoverflow.com/questions/13868821
复制相似问题