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

如何使用bash的sort命令按指定版本规则排序SQL文件

解决方案

你需要的排序规则刚好匹配版本号排序逻辑,以下是两种实现方法:

方法1:使用GNU sort的版本排序参数(推荐)

GNU实现的sort自带-V(--version-sort)参数,专门用于自然排序版本号,无需额外处理即可直接符合你的需求:

ls *.sql | sort -V

执行后输出顺序完全匹配你要求的结果:

V0__file_c.sql
V0.1__file_a.sql
V0.2__file_b.sql
V1__file_g.sql
V1.1__file_a.sql
V1.2__b.sql
V1.3__c.sql
V1.4__d.sql
V1.5__e.sql
V1.6__f.sql

方法2:兼容非GNU环境的多键排序

如果你的系统是BSD等不带-V参数的环境,可以通过字段拆分+多键排序实现:

ls *.sql | awk -F'[._]' '{print $1, (NF>2 ? $2 : 0), $0}' | sort -k1.2n -k2n | cut -d' ' -f3-

命令逻辑说明:

  • 用awk拆分文件名,主版本号取V之后到第一个分隔符(.或_)的部分,无次版本号时默认次版本号为0,将这两个排序键拼接在原文件名前
  • 用sort先按主版本号数值排序,再按次版本号数值排序
  • 最后用cut去掉临时拼接的排序键,输出原文件名

内容的提问来源于stack exchange,提问作者Roman R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:36:00