AWE*_*AWE 29 unix linux sorting bash
这是一个文件列表:
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
Run Code Online (Sandbox Code Playgroud)
现在我想用数字排序.以*23*开头,以*102*结尾.
我曾尝试-n
和-g
.-t
在这些凌乱的字符串中没有帮助.
我可以忽略带有选项的数字的前导字符串,还是我必须聪明和脚本?
Ste*_*eve 39
使用 ls -lv
从手册页:
-v natural sort of (version) numbers within text
Run Code Online (Sandbox Code Playgroud)
Joã*_*lva 33
请尝试以下方法:
sort -t '_' -k 2n
Run Code Online (Sandbox Code Playgroud)
-t '_'
(将分隔符设置为下划线字符)-k 2n
(使用数字排序按第二列排序)演示.
如果可用,只需使用sort -V
. 这是对版本号的排序,但作为“自然排序”选项效果很好。
$ ff=$( echo some.string_{100,101,102,23,24,25}_with_numbers.in-it.txt )
Run Code Online (Sandbox Code Playgroud)
无排序:
$ for f in $ff ; do echo $f ; done
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
Run Code Online (Sandbox Code Playgroud)
使用排序 -V:
$ for f in $ff ; do echo $f ; done | sort -V
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26038 次 |
最近记录: |