删除除 10 个最新目录之外的所有目录

Kev*_*ley 0 bash build

在 bash 中,如何删除除最新创建的五个目录(按创建时间)之外的所有目录?

这是由构建脚本使用的,我们想要清除旧的构建。谢谢。

编辑:修改日期时间也可以。

Ale*_*ley 5

获取文件创建时间并不简单。请参阅此处参考:https://unix.stackexchange.com/questions/20460/how-do-i-do-a-ls-and-then-sort-the-results-by-date-created

但是,如果您对最后一次修改时间感到满意(这里应该没问题?),那么像这样的一行代码应该可以做到。

ls -dt */ | tail -n +6 | xargs rmdir

  • ls -d */列表目录-t按顺序列出它们
  • tail -n +6打印除最后五行之外的所有行
  • xargs rmdir调用rm -r每个目录(或者rm -r如果它们非空则可以使用)