我正在尝试找到一种方法,以不区分大小写的方式打印ls命令的结果。当前ls命令的结果为:
Apple Boy Chart Dock apples boys charts docks
我想要的是:
Apple apples Boy boys Chart charts Dock docks
这可能吗?
2w3rbyxf1#
ls(至少如果你使用的是GNU coreutils版本; ls --version以检查)是否根据当前区域设置对文件名进行排序。可用的语言环境设置因系统而异(列表为locale -a),但在我的系统上:
ls
ls --version
locale -a
LC_COLLATE=en_US.utf8 ls
将包含a和A的名称排在b和B之前--尽管它可能不是 * 完全 * 按照您要查找的顺序。即使当ls在多个列中列出文件时,这也是有效的,而sort -f很难做到这一点。(我特意将$LC_COLLATE设置为C,以便按ASCII顺序进行区分区域设置的排序。)
a
A
b
B
sort -f
$LC_COLLATE
C
0ejtzxu12#
只需将结果通过管道传输到sort -f。
46scxncf3#
作为[基思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上不起作用。
yduiuuwa4#
# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto )' # ll
deyfvvtc5#
ls --格式=单列|分类
7gyucuyw6#
添加到.profile:
alias llg='ls -ltr | grep -i'
则可以使用以下命令:
llg "week"
6条答案
按热度按时间2w3rbyxf1#
ls
(至少如果你使用的是GNU coreutils版本;ls --version
以检查)是否根据当前区域设置对文件名进行排序。可用的语言环境设置因系统而异(列表为
locale -a
),但在我的系统上:将包含
a
和A
的名称排在b
和B
之前--尽管它可能不是 * 完全 * 按照您要查找的顺序。即使当
ls
在多个列中列出文件时,这也是有效的,而sort -f
很难做到这一点。(我特意将
$LC_COLLATE
设置为C
,以便按ASCII顺序进行区分区域设置的排序。)0ejtzxu12#
只需将结果通过管道传输到
sort -f
。46scxncf3#
作为[基思Thompson]回答的后续,我在Linux系统上进行了测试,LC_COLLATE=C对我不起作用,但LC_COLLATE=“en_US.UTF-8”起作用了。
这在OS X上不起作用。
yduiuuwa4#
deyfvvtc5#
ls --格式=单列|分类
7gyucuyw6#
添加到.profile:
则可以使用以下命令: