使“ls”命令在“B”之前排序“a”(对比a-> b-> A-> B)

时间:2013-08-24 00:15:44

标签: unix command-line terminal

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

目前ls命令导致:

Apple
Boy
Chart
Dock
apples
boys
charts
docks

我想要的是这个:

Apple
apples
Boy
boys
Chart
charts
Dock
docks

这可能吗?

5 个答案:

答案 0 :(得分:10)

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

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

LC_COLLATE=en_US.utf8 ls

aA之前使用bB对名称进行排序 - 尽管它可能不是完全寻找。

即使ls列出了多列中的文件,这也很有用,这对sort -f很难实现。

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

答案 1 :(得分:5)

只需将结果传递给sort -f

答案 2 :(得分:0)

# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto )'
# ll

答案 3 :(得分:0)

作为[Keith Thompson]答案的后续内容,我在Linux系统上进行了测试,LC_COLLATE = C对我不起作用,但是LC_COLLATE =“en_US.UTF-8”。我在启动脚本中添加了以下内容:

export LANG=en_US.UTF-8
export LC_COLLATE="en_US.UTF-8"

这在OS X上不起作用。

答案 4 :(得分:-1)

添加到.profile:

alias llg='ls -ltr | grep -i'

然后您可以使用以下命令:

llg "week"