linux - 在 bash 中按数字对文件进行排序

标签 linux bash sorting ls

我需要按数字对 .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 在每一行列出 1 个 flv 文件,sort 从第二个字符(数字的开头)开始在每一行中获取第一个(也是唯一一个)单词。按数字排序

关于linux - 在 bash 中按数字对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360925/

相关文章:

bash - 如何在现有的Docker容器中永久设置环境变量?

javascript - 将代码改进为更干燥的方法?

algorithm - 给定范围内的值,查找范围的端点

linux - Centos6.9 目录中的权限被拒绝

linux - Crontab 不记录到文件

c - C 编程中的线程 (linux)

linux - 如何在 bash 中循环一对文件?

bash - 如何使用 export PS1 ="\W\$"修复自定义终端提示;清除;变成\W $

python - 使用另一个 python 生成器对生成的数字进行排序

c++ - linux c++ libev 官方示例显示冗余控制台行为