仅保留目录中最新的两个文件夹

仅保留目录中最新的两个文件夹

我有一个包含以下文件夹的目录。

Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210

我想只保留最新的两个文件夹并删除其余的。文件夹的格式如下:Data-YYYY-MM-DD-HHMM

有没有办法可以比较文件夹名称并保留最新的并删除其余的?我可以稍后在我的 shell 脚本中实现这一点。

答案1

我假设目录的名称也是其创建的时间戳。如果是这样,那么您可以使用ls根据目录的修改时间列出文件。

这将按最新优先的顺序列出目录

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt 

删除除最新的 2 个文件之外的所有目录:-

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r

笔记:首先,请在测试环境中尝试一下,并彻底确认这是否正是您想要执行的操作,以及该脚本是否适用于您的目录集。

相关内容