这是我的问题,
我有一个文件夹,其中存储着多个具有特定格式的文件:
Name_of_file.TypeMM-DD-YYYY-HH:MM
其中MM-DD-YYYY-HH:MM是其创建时间。可能会有多个具有相同名称但不同时间的文件。
我想要一个脚本,可以保留每个文件的最新3个版本。
所以,我在这里找到了一个例子:删除旧文件的shell脚本
但我不想删除一些文件,而是保留一定数量的较新文件。有没有办法获取该find命令,解析Name_of_file并保留最新的3个文件???
这是我尝试过的代码,但它并不完全符合我的需求。
find /the/folder -type f -name 'Name_of_file.Type*' -mtime +3 -delete
感谢您的帮助!
我决定提供我的最终解决方案,以便有需要的人获取。这是两种解决方案的结合。
ls -r | grep -P "(.+)\d{4}-\d{2}-\d{2}-\d{2}:\d{2}" | awk 'NR > 3' | xargs rm
一行命令,高效便捷。如果日期或名称的模式发生变化,只需更改grep -P匹配模式即可。这样,您可以确保只有符合此模式的文件将被删除。