bash - 文件名的数字排序

标签 bash sorting

我有一个包含脚本的文件夹,其名称模式为 UPDATE[x.y.z],其中 x.y.z 是脚本的版本。

我需要的是一个 bash 脚本,它运行按版本排序的脚本,因此按字母顺序排序不好。

例如,UPDATE1.11.0应该在UPDATE1.2.3之后执行。

是否有一个比较器可以用来指示排序顺序?如果不行,还能怎么办?

最佳答案

如果您没有 GNU 排序(即您使用 OSX 或 FreeBSD 或 NetBSD),您可以通过对不同字段进行排序来伪造它。

[ghoti ~]$ printf "foo1.2.3\nfoo1.11.0\nfoo1.4.1\nfoo1.4.0\n" | sort -nt. -k2,3
foo1.2.3
foo1.4.0
foo1.4.1
foo1.11.0
[ghoti ~]$

这会错过主要版本号,因为它不是由点分隔的。但无论如何它可能对你有用。

关于bash - 文件名的数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10998218/

相关文章:

bash - 用 sed 阻止 cut 并抑制最后一行

bash - Expect 条件似乎不起作用

jquery - 使用 jQuery 对 <a> 元素进行排序

python - 在 python 的 sort() 函数的情况下,多态性功能会失败,并且我们如何对 python 中的虚数进行排序?

excel - 根据每个条目的最后两个字符使用 VBA 对表进行排序

bash - 从文件中而不是从目录中删除空格会引发错误

linux - Bash if 条件检查 ubuntu 软件包是否有更新版本?

bash - Grep 文件中的日期并格式化它们

javascript - 按属性对 jQuery 结果进行排序?

javascript - 通过使用 jQuery 重新排序元素来模拟 CSS Column 垂直内容流?