Linux Shell脚本以删除除最后5个文件夹外的所有文件夹
我正在寻找以下脚本的变体,以删除除最后创建的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个文件时,它只需要删除第一个创建的文件,并保留其他
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!”:)