我有一个包含以下文件夹的目录。
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
笔记:首先,请在测试环境中尝试一下,并彻底确认这是否正是您想要执行的操作,以及该脚本是否适用于您的目录集。