使"ls"命令在"B"之前排序为"a"(vs a-> b-> A-> B)

And*_*rew 5 unix terminal command-line

我试图找到一种方法,以不区分大小写的方式打印ls命令的结果.

目前ls命令导致:

Apple
Boy
Chart
Dock
apples
boys
charts
docks
Run Code Online (Sandbox Code Playgroud)

我想要的是这个:

Apple
apples
Boy
boys
Chart
charts
Dock
docks
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Kei*_*son 11

ls(至少如果你使用的是GNU coreutils版本; ls --version要检查它)根据当前的语言环境对文件名进行排序.

可用的语言环境集因系统而异(locale -a对于列表而言),但在我的系统上:

LC_COLLATE=en_US.utf8 ls
Run Code Online (Sandbox Code Playgroud)

使用aA之前对名称进行排序bB- 尽管它可能不完全符合您要查找的顺序.

即使ls列出多列中的文件,这也很有用,这很难做到sort -f.

(我已经专门$LC_COLLATE设置,C以便以ASCII顺序完成区域设置敏感的排序.)


Oli*_*rth 5

只需将结果传递给sort -f.

  • 不适用于`ls -R` (3认同)