小编典典

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

all

我的目录命名为:

2012-12-12
2012-10-12
2012-08-08

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


阅读 64

收藏
2022-07-06

共1个答案

小编典典

这将为您递归地执行此操作:

find /path/to/base/dir/* -type d -ctime +10 -exec rm -rf {} \;

解释:

  • find:用于查找文件/目录/链接等的unix命令。
  • /path/to/base/dir:开始搜索的目录。
  • -type d: 只查找目录
  • -ctime +10: 只考虑修改时间超过 10 天的
  • -exec ... \;:对于找到的每个此类结果,请执行以下命令...
  • rm -rf {}:递归强制删除目录;该{}部分是从前一部分替换查找结果的位置。

或者,使用:

find /path/to/base/dir/* -type d -ctime +10 | xargs rm -rf

效率更高一些,因为它相当于:

rm -rf dir1 dir2 dir3 ...

相对于:

rm -rf dir1; rm -rf dir2; rm -rf dir3; ...

就像在-exec方法中一样。


使用现代版本的find,您可以替换;with +,它会为您执行等效的xargs调用,传递适合每个 exec 系统调用的尽可能多的文件:

find . -type d -ctime +10 -exec rm -rf {} +
2022-07-06