拥有像
这样的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是本例中的最后一个后缀?
抱歉:目前尚不清楚给定示例中的“后缀”是最后一个下划线之后的所有内容。
答案 0 :(得分: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)。但它首先出现了,脏(我知道)并且很快。
如果文件/目录名称有空格,则可能无效。但它是可以修复的。例如使用隐形字符作为分隔符。