0

Bash 用命令对文件进行排序的方式真的让我很烦,而且sort似乎找不到解决方法。当我按名称使用 GNOME 对文件进行排序时,它准确地显示了我想要的方式。我正在尝试按实际顺序排序,但是在 bash 中排序时,10 和 1 会搞砸一切。以下是 bash 如何对我的文件样本进行排序:

HeadsetBatteryBG_10@2x.png
HeadsetBatteryBG_11@2x.png
HeadsetBatteryBG_12@2x.png
HeadsetBatteryBG_1@2x.png
HeadsetBatteryBG_13@2x.png
HeadsetBatteryBG_14@2x.png
HeadsetBatteryBG_15@2x.png
HeadsetBatteryBG_16@2x.png
HeadsetBatteryBG_17@2x.png
HeadsetBatteryBG_2@2x.png
HeadsetBatteryBG_3@2x.png
HeadsetBatteryBG_4@2x.png
HeadsetBatteryBG_5@2x.png
HeadsetBatteryBG_6@2x.png
HeadsetBatteryBG_7@2x.png
HeadsetBatteryBG_8@2x.png
HeadsetBatteryBG_9@2x.png

我看到它在这里做了什么,但是在 bash 中是否有任何地方可以对这样的列表进行排序,它应该如何排序?使用真实数字顺序的数字,而不是它正在做的这种奇怪的事情。

4

2 回答 2

4

尝试

sort -k2 -t_ -n [file]

这将使用 _ 作为字段分隔符 (-t_) 在第二个字段 (-k2) 上按数字 (-n) 排序。

(无耻地从超级用户那里窃取)

于 2012-04-27T00:08:21.850 回答
2

甚至更简单,假设 GNU 排序:sort -V

   -V, --version-sort
          natural sort of (version) numbers within text
于 2012-04-27T01:47:26.557 回答