Unix的'ls'按名称sorting
你可以按名称对ls进行分类吗?
令人惊讶的是(或者我必须死脑筋)我没有看到任何东西在手册页上,或者可以在Google上find任何东西:)
我的默认情况下按名称sorting。 你在看什么?
对于简单的事情,你可以把ls和sorting结合起来。 只是一个文件名的列表:
ls -1 | 分类
按相反的顺序sorting
ls -1 | 分类-r
来自coreutils
ls
默认执行一个locale-awaresorting,因此在某些情况下可能会产生令人惊讶的结果(例如, %foo
会在LANG=en_US
bar
和quux
之间进行sorting)。 如果你想要一个ASCIIbeticalsorting,使用
LANG=C ls
*尼克斯工具的美是你可以结合他们:
ls -l | sort -k9,9
注意:“a”在“Z”后出现:
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
从手册页(对于bash ls):
如果没有-cftuSUX和–sort,则按字母顺序对条目进行sorting。
检查你的.bashrc
文件的别名。
ls
工具应符合IEEE标准1003.1-2001( POSIX.1
),其中规定:
22027:根据当前语言环境的sorting顺序,分别对目录和非目录操作数进行sorting。
26027:默认情况下,格式是未指定的,但是输出应按照符号名称的字母顺序sorting :
- 库或对象名称,如果指定了-A
- 符号名称
- 符号types
- 符号的价值
- 与符号相关的大小(如果适用)
In Debian Jessie, this works nice: ls -lah --group-directories-first # l=use a long listing format # a=do not ignore entries starting with . # h=human readable # --group-directories-first=(obvious) # Note: add -r for reverse alpha # You might consider using lh by appending to ~/.bashrc as the alias: ~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc # -- restart your terminal before using lh command --
用数字string区分的文件可能在它前面有分隔符的条件下sorting。 在这种情况下,可以使用下一个语法:ls -x1 file | sort -t''-n -k2
示例:ls -1 TRA * log | sort -t'_'-n -k2 TRACE_1.log TRACE_2.log TRACE_3.log TRACE_4.log TRACE_5.log TRACE_6.log TRACE_7.log TRACE_8.log TRACE_9.log TRACE_10.log