1

有一个类似的 ls 输出

GGGG_3.0.3_98/
GGGG_3.0.3_d_100/
GGGG_3.0.3_d_101/
GGGG_3.0.3_d_99/
GGGG_3.0.4_104/
GGGG_3.0.4_105/
GGGG_3.0.4_106/
GGGG_3.0_87/
GGGG_3.0_89/
GGGG_3.0_90/
GGGG_3.0_91/
GGGG_3.0_92/
GGGG_3.0_93/
SSS_2.2.3_01/
SSS_2.2.3_02/
SSS_2.2.3_03/
TTT_2.8.3_29/

如何获取按后缀排序的元素?

另外,我可以使用任何快速命令来知道 106 是本示例中的最后一个后缀吗?

抱歉:尚不清楚给定示例中的“后缀”是否是最后一个下划线之后的所有内容。

4

1 回答 1

3
ls ... |awk -F'[_/]' '{f=$(NF-1)>f?$(NF-1):f}END{print f}'

会给你106

按后缀排序:

ls..|awk -F'[_/]' '{print $(NF-1), $0}'|sort -n|sed 's/.* //'

注意

  • 链不是必需的awk|sort|sed,awk 可以单独完成(通过 asort/asorti)。但它首先出现,肮脏(我知道)而且很快。

  • 如果文件/目录名称有空间,它可能不起作用。但它是可以修复的。例如,使用不可见的字符作为分隔符。

于 2013-07-03T16:52:51.320 回答