这是我的问题,
我有一个文件夹,其中存储了多个具有特定格式的文件:
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 模式以匹配它。这样您就可以确定只有符合此模式的文件才会被删除。