我有一个路径,其中将复制构建目录,因此我只需要保留最新的 3 个目录并删除其他目录,不是按日期而是按最新的构建编号。
如果我在路径 /tmp 中有以下目录
1.1.0000-021, 1.1.0000-005, 1.1.0000-018, 1.1.0000-004
我应该删除 /tmp 路径中的 1.1.0000-004 目录,因为它是最旧的目录。
我尝试使用 rm -rf /base/path -type d -ctime 4 ,但这是基于最新文件,不确定是否获取要删除的最早号码。
答案1
您可以使用以下链:
ls:列出文件/目录
排序-nr:按数字顺序对文件/目录进行反向排序
尾巴:从列表中保留最后 $n(此处为 4)个条目(如果只剩下 4 个,列表将为空)
例如:
ls | sort -nr | tail +5
然后取出文件并删除它们;(例如使用 xargs + rm)