按顺序对文件进行Bash和排序

Ope*_*way 30 sorting bash

使用以前的bash脚本,我创建了一个文件列表:

data_1_box
data_2_box
...
data_10_box
...
data_99_box
Run Code Online (Sandbox Code Playgroud)

问题是,现在我需要连接它们,所以我尝试了

ls -l data_*

但我明白了

.....
data_89_box
data_8_box
data_90_box
...
data_99_box
data_9_box
Run Code Online (Sandbox Code Playgroud)

但我需要进入1,2,4,4,... 9,......,89,90,91,......,99

可以用bash完成吗?

Pup*_*ppe 64

ls data_* | sort -n -t _ -k 2
Run Code Online (Sandbox Code Playgroud)

-n:对数字进行排序
-t:字段分隔符'_'-
k:在第二个字段上排序,在您的情况下是第一个'_'之后的数字


Pär*_*der 20

如何使用-v旗帜ls?该标志的目的是根据版本号对文件进行排序,但它在这里也可以正常工作,并且无需将结果传递给sort:

ls -lv data_*
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 9

如果您的sort版本排序,请尝试:

ls -1 | sort -V
Run Code Online (Sandbox Code Playgroud)

(那是首都V).