gpt4 book ai didi

linux - 使用 shell 脚本和 find 命令删除除最后 5 个目录之外的所有目录

转载 作者:太空狗 更新时间:2023-10-29 11:30:40 25 4
gpt4 key购买 nike

-不确定这是属于此处还是服务器故障-

我想做的是列出一个目录中的所有目录并删除所有目录,最后 5 个除外。我们有一个部署系统可以逐步执行某些操作链接:

/var/www/html/build1
/var/www/html/build2
/var/www/html/build3
/var/www/html/build4
/var/www/html/build5
/var/www/html/build6
/var/www/html/build7
/var/www/html/build8
/var/www/html/build9
/var/www/html/build10

这占用了太多磁盘空间,因此我们只想保留最后 5 个构建。

我想到了以下内容:

(查找/var/www/html/-type d -name "build*"| sort -r)/var/www/html/build1564/var/www/html/build1563/var/www/html/build1560/var/www/html/build1558/var/www/html/build1557/var/www/html/build1556/var/www/html/build1555/var/www/html/build1554/var/www/html/build1553/var/www/html/build1552/var/www/html/build1551/var/www/html/build1550

现在我需要做的就是为该命令添加一个“偏移量”,这样前五个目录就不会出现了。之后,应该删除剩余的目录。

如果目录不超过 5 个,则不会发生任何事情。

我想我在这里仍然缺少两个步骤,偏移步骤和 rm -rf 步骤?

最佳答案

要获得除第一个 5 之外的所有内容,请使用 tail -n +5。(我认为您不需要反转排序)并 rm 他们你可以使用 xargs。所以你可以试试这个

find /var/www/html/ -type d -name "build*" | sort | tail -n +5 | xargs -I % echo -rf %

(将 echo 替换为 rm 即可)

关于linux - 使用 shell 脚本和 find 命令删除除最后 5 个目录之外的所有目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3157253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com