用bash数字sorting文件

我需要以数字方式对.flv文件进行sorting,并且可以使用以下命令来完成:

ls *\.flv | sort --version-sort -f 

但有很多文件(数百),它没有正确sorting。

 ls *\.flv | sort --version-sort -f | tail -n 20 e680.flv e681.flv e682.flv e683.flv e684.flv e685.flv e686.flv e687.flv e688.flv e689.flv e690.flv e691.flv e692.flv e693.flv e694.flv e695.flv **e696.flv** s572.flv s602.flv s654.flv 

但奇怪的是,如果我毁了没有"*.flv"的命令它的工作。 我可以只使用LS,但我有其他文件夹中的文件types。

 ls | sort --version-sort -f | tail -n 20 e680.flv e681.flv e682.flv e683.flv e684.flv e685.flv e686.flv e687.flv e688.flv e689.flv e690.flv e691.flv e692.flv e693.flv e694.flv e695.flv e696.flv 

到目前为止我已经尝试过了:

  ls | sort --version-sort -f | grep "flv" ls *.flv | sort --version-sort -f ls *\.flv | sort --version-sort -f ls *.flv | sort -f 

Solutions Collecting From Web of "用bash数字sorting文件"

我会尝试下面的代码。 适用于我的测试场景:

 ls -1 *\.flv | sort -n -k1.2 

ls在每行上列出flv文件1, sort从第二个字符(数字的开头)开始,每行首先(并且只有一个)字。 按数字排序

在第一个字符之后按数字排序,试试这个:

 sort -k1.2n