Unix的'ls'按名称sorting

你可以按名称对ls进行分类吗?

令人惊讶的是(或者我必须死脑筋)我没有看到任何东西在手册页上,或者可以在Google上find任何东西:)

我的默认情况下按名称sorting。 你在看什么?

对于简单的事情,你可以把lssorting结合起来。 只是一个文件名的列表:
ls -1 | 分类

按相反的顺序sorting
ls -1 | 分类-r

来自coreutils ls默认执行一个locale-awaresorting,因此在某些情况下可能会产生令人惊讶的结果(例如, %foo会在LANG=en_US barquux之间进行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