11

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

当前 ls 命令导致:

Apple
Boy
Chart
Dock
apples
boys
charts
docks

我想要的是这个:

Apple
apples
Boy
boys
Chart
charts
Dock
docks

这可能吗?

4

5 回答 5

14

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

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

LC_COLLATE=en_US.utf8 ls

a使用andA之前b和之前对名称进行排序B- 尽管它可能不完全符合您要查找的顺序。

即使ls在多列中列出文件,这也适用,这很难用sort -f.

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

于 2013-08-24T00:29:06.693 回答
4

只需将结果通过管道传输到sort -f.

于 2013-08-24T00:18:54.897 回答
1

作为 [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 上不起作用。

于 2015-04-08T01:54:08.227 回答
0
# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto )'
# ll
于 2014-02-17T17:09:57.713 回答
-2

添加到 .profile:

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

那么您可以使用以下命令:

llg "week"
于 2015-05-22T15:26:04.633 回答