这个问题已经有了答案:
How can I sort file names by version numbers?
5个答案
我的生成文件夹中有很多文件,我正在尝试使用sort命令对它们进行排序。
文件的结构如下:
名称-版本-“V”-生成日期
xxx-2.0.0-snapshot-v2014-07-10_18-01-05.log
xxx-2.0.0-snapshot-v2014-07-10_18-02-05.log
xxx-2.0.0-snapshot-v2014-07-10_18-03-05.log
xxx-2.0.0-snapshot-v2014-07-10_18-04-05.log
xxx-2.0.0-snapshot-v2014-07-10_18-05-05.log
如果我们假设版本字符串将保持在3位,那么对它们进行排序是很容易的。如果我在这里添加2.1或2.0.0.2等不同版本呢?我需要这样的结果:
xxx-2.1-snapshot-v2014-07-10_18-05-05.log
xxx-2.0.2-snapshot-v2014-07-10_18-04-05.log
xxx-2.0.0.2-快照-v2014-07-10_18-03-05.log
xxx-2.0.0.1-快照-v2014-07-10_18-02-05.log
xxx-2.0.-快照-v2014-07-10_18-01-05.log
最佳答案
$ cat file
xxx-2.0.2-SNAPSHOT-V2014-07-10_18-04-05.log
xxx-2.0.0.2-SNAPSHOT-V2014-07-10_18-03-05.log
xxx-2.1-SNAPSHOT-V2014-07-10_18-05-05.log
xxx-2.0.0.1-SNAPSHOT-V2014-07-10_18-02-05.log
xxx-2.0.-SNAPSHOT-V2014-07-10_18-01-05.log
$ sort -V -r -t- -k2,2 < file
xxx-2.1-SNAPSHOT-V2014-07-10_18-05-05.log
xxx-2.0.2-SNAPSHOT-V2014-07-10_18-04-05.log
xxx-2.0.0.2-SNAPSHOT-V2014-07-10_18-03-05.log
xxx-2.0.0.1-SNAPSHOT-V2014-07-10_18-02-05.log
xxx-2.0.-SNAPSHOT-V2014-07-10_18-01-05.log
注意:
sort
的一些实现不支持-V
选项…说明:
-V:版本排序
-T-:用分隔符“-”拆分成列
-k2,2:按字段2排序&仅2
-R:反向排序(基于您的预期输出)。如果不需要,请删除此标志。)
关于linux - 如何在Linux中按特定部分对文件名进行排序? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25286601/