You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找并删除指定.sql文件,仅保留最新的3个?

保留最新3个.sql文件并删除其余文件的解决方案

需求:删除目录下所有.sql文件,仅保留修改时间最新的3个。当前目录结构如下:

├── db1
│	└── db.sql
├── db2
│	├── db2.sql
│	└── db3.sql
├── db5.sql
├── emptydir1
├── emptydir2
├── emptydir4
├── emptydir5
├── emptyri3
├── filenam2
├── filenam3
├── filename
├── filename4
├── filename5
├── find_db.sh
└── noemptydir1
    └── database.sql

已尝试的方法及问题

  • 使用find . -name "*.sql" -type f -ls | sort可列出所有目标文件,但直接添加-delete参数会删除全部.sql文件,无法保留最新的3个。
  • 尝试rm ls -t | awk 'NR>3',该命令无法正确定位并删除目标文件。

可行解决方案

使用以下命令即可实现需求:

rm `find . -name "*.sql" |  xargs ls -lt | awk '{print $NF}' | tail -n +4`

命令各部分解释:

  1. find . -name "*.sql":递归查找当前目录下所有.sql文件。
  2. xargs ls -lt:将找到的文件路径传递给ls -lt,按修改时间从新到旧排序。
  3. awk '{print $NF}':提取排序后每行的最后一列(即文件路径)。
  4. tail -n +4:从第4行开始输出,排除前3个最新的文件。
  5. 反引号`包裹的部分会优先执行,将需要删除的文件路径传递给rm命令完成删除操作。

内容的提问来源于stack exchange,提问作者Frendom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:11:54