在 bash 中对文件进行数字排序
·
问题:在 bash 中对文件进行数字排序
我需要对 .flv 文件进行数字排序,并且可以使用以下命令进行排序:
ls *\.flv | sort --version-sort -f
但是有很多文件(数百个),它的排序不正确。
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 但我在文件夹中有其他文件类型。
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
解答
我会尝试以下代码。适用于我的测试场景:
ls -1 *\.flv | sort -n -k1.2
ls在每一行列出 flv 文件 1,sort从第二个字符(数字的开头)开始在每行上取第一个(也是唯一一个)单词。按数字排序
更多推荐




所有评论(0)