BASH:按排序顺序编号为#{number}的循环文件

时间:2018-03-12 17:59:56

标签: bash unix for-loop terminal

这与BASH: how to loop all files in sorted order 类似,但我感觉不同 -

我有一系列文件前面有井号和数字,默认情况下在bash中按此顺序排序:

#1 Clear.png
#10 Brilliant Blue.png
#11 Caribbean Blue.png
#12 Aquamarine.png
#13 Teal.png
#14 Turquoise.png
#15 Green.png
#16 Light Green.png
#17 Purple.png
#18 Lt Purple.png
#19 Yellow.png
#2 Standard Pink.png
#20 Brown.png
#3 Light Pink.png
#4 Fuschia.png
#5 Wine.png
#6 Red.png
#7 Orange.png
#8 Blue.png
#9 Light Blue.png

我想在这个顺序中按英镑符号前面的数值在for循环中对这些进行排序,例如

for i in `ls * | sort [method to sort]`; do
*stuff*
done

问题在于,我找到的所有排序解决方案似乎都不能用于使用井号和/或空格对此案例进行排序。

订单文件应该排序:

#1 Clear.png
#2 Standard Pink.png
#3 Light Pink.png
#4 Fuschia.png
#5 Wine.png
#6 Red.png
#7 Orange.png
#8 Blue.png
#9 Light Blue.png
#10 Brilliant Blue.png
#11 Caribbean Blue.png
#12 Aquamarine.png
#13 Teal.png
#14 Turquoise.png
#15 Green.png
#16 Light Green.png
#17 Purple.png
#18 Lt Purple.png
#19 Yellow.png
#20 Brown.png

1 个答案:

答案 0 :(得分:1)

sort -k 1.2 -n应该做的伎俩

-k F.C定义输入应根据字段F进行排序,从字符C开始。两者都从1开始

编辑:刚才我意识到我的回答几乎与你所关联的问题的答案相同。所以绝对是重复的