Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 不带前导零的文件名排序_Bash_Sorting - Fatal编程技术网

Bash 不带前导零的文件名排序

Bash 不带前导零的文件名排序,bash,sorting,Bash,Sorting,我想按以下模式对立体图像文件进行排序 img_i_j.ppm, 其中i是图像计数器,j是相机的id[0,1]。 目前,如果我使用 ls -1 *.ppm | sort -n 结果如下: img_0_0.ppm img_0_1.ppm img_10_0.ppm img_10_1.ppm img_1_0.ppm img_11_0.ppm img_11_1.ppm img_1_1.ppm img

我想按以下模式对立体图像文件进行排序

img_i_j.ppm,
其中i是图像计数器,j是相机的id[0,1]。 目前,如果我使用

ls -1 *.ppm | sort -n
结果如下:

img_0_0.ppm
img_0_1.ppm
img_10_0.ppm
img_10_1.ppm
img_1_0.ppm  
img_11_0.ppm                        
img_11_1.ppm                        
img_1_1.ppm  
img_12_0.ppm
但我需要有这个输出:

img_0_0.ppm
img_0_1.ppm
img_1_0.ppm
img_1_1.ppm
img_2_0.ppm  
img_2_1.ppm
...                        
img_10_0.ppm                        
img_10_1.ppm  
...    

无需修改文件名即可实现此目的吗?

如注释所示,使用

sort -V
我最初将其作为注释发布,因为此参数并不总是在
排序
二进制文件中,因此您必须使用
排序-k-n…
(例如like)。

ls
(现在?)具有
-v
选项,这正是您想要的。从
手册ls

-v     natural sort of (version) numbers within text
这比管道输送到
排序
更简单,并遵循建议
ls


如果您确实想要解析输出,我想您可以在bash中处理
LC\u-COLLATE
。或者,在zsh中,您可以只使用glob
*(n)

在osx上不起作用:请参见@JeffCharter-yep,
-V
仅用于确定的
排序。这就是为什么我链接了一个
sort-k-n…
方法。