Cra*_*ash 10 linux sorting bash ls
我需要以数字方式对.flv文件进行排序,我可以使用以下命令执行此操作:
ls *\.flv | sort --version-sort -f
Run Code Online (Sandbox Code Playgroud)
但是有很多文件(数百个),它没有正确排序.
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
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,如果我在没有"*.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
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的:
ls | sort --version-sort -f | grep "flv"
ls *.flv | sort --version-sort -f
ls *\.flv | sort --version-sort -f
ls *.flv | sort -f
Run Code Online (Sandbox Code Playgroud)
Kam*_*rot 16
我会尝试下面的代码.适用于我的测试场景:
ls -1 *\.flv | sort -n -k1.2
Run Code Online (Sandbox Code Playgroud)
ls每行上的列表flv文件1,sort从第二个字符(数字的开头)开始,每行上的第一个(也是唯一一个)单词.按数字排序
给定一个文件夹,其中包含从1.flv到的顺序命名的文件9999.flv
ls -v1 *.flv
Run Code Online (Sandbox Code Playgroud)
将输出:
1.flv
2.flv
...
10.flv
...
90.flv
...
100.flv
101.flv
...
9999.flv
Run Code Online (Sandbox Code Playgroud)
从手册页:
-v natural sort of (version) numbers within text
-1 list one file per line
Run Code Online (Sandbox Code Playgroud)
为简便起见,可以将上面的两个标志合并为-v1。
| 归档时间: |
|
| 查看次数: |
17805 次 |
| 最近记录: |