Linux Shell脚本以删除除最后5个文件夹外的所有文件夹

Linux Shell脚本以删除除最后5个文件夹外的所有文件夹,linux,shell,find,Linux,Shell,Find,我正在寻找以下脚本的变体,以删除除最后创建的5个文件夹外的所有文件夹: find ./ -type d -ctime +10 -exec rm -rf {} + 因此,这将删除所有超过10天的内容 但在我的案例中,时间因素并不总是适用。我需要一个类似的脚本来删除文件夹,但我始终希望保留最后5个创建的文件夹(按日期) 因此,当有100个文件夹时,它需要删除其中的95个文件夹,并保留最后创建的5个文件夹 当有5个时,它需要将它们全部保留下来 当有6个文件时,它只需要删除第一个创建的文件,并保留其他

我正在寻找以下脚本的变体,以删除除最后创建的5个文件夹外的所有文件夹:

find ./ -type d -ctime +10 -exec rm -rf {} +
因此,这将删除所有超过10天的内容

但在我的案例中,时间因素并不总是适用。我需要一个类似的脚本来删除文件夹,但我始终希望保留最后5个创建的文件夹(按日期)

因此,当有100个文件夹时,它需要删除其中的95个文件夹,并保留最后创建的5个文件夹

当有5个时,它需要将它们全部保留下来


当有6个文件时,它只需要删除第一个创建的文件,并保留其他5个。

首先
查找列1中带有前导日期的文件,
按日期排序,从列表中删除最后5个最新的项目(要保留的项目),删除列1,然后
rm
保留任何较旧的目录。首先使用回声测试代码:

find . -type d -printf '%T@ %p\n' | sort -n | 
head -n -5 | cut -f2- -d" " | xargs -0 echo rm -rd
…并且如果看起来正常,请移除
回音
以执行契约:

find . -type d -printf '%T@ %p\n' | sort -n | 
head -n -5 | cut -f2- -d" " | xargs -0 rm -rd


上述从

中窃取的部分代码首先
查找列#1中打印有前导日期的文件,
按日期排序
,从列表中删除最后5个最新项目(保留的项目),删除列#1,然后
rm
任何旧目录。首先使用回声测试代码:

find . -type d -printf '%T@ %p\n' | sort -n | 
head -n -5 | cut -f2- -d" " | xargs -0 echo rm -rd
…并且如果看起来正常,请移除
回音
以执行契约:

find . -type d -printf '%T@ %p\n' | sort -n | 
head -n -5 | cut -f2- -d" " | xargs -0 rm -rd


上面从

窃取的一些代码几乎未经测试,因此在结尾处出现了“ls-ld!”)


几乎未经测试,因此在结尾处出现了“ls-ld!”:)