Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使;ls";命令排序“;a「;“之前”;B";(与a->;b->;a->;b相比)_Unix_Command Line_Terminal - Fatal编程技术网

Unix 使;ls";命令排序“;a「;“之前”;B";(与a->;b->;a->;b相比)

Unix 使;ls";命令排序“;a「;“之前”;B";(与a->;b->;a->;b相比),unix,command-line,terminal,Unix,Command Line,Terminal,我试图找到一种方法,以不区分大小写的方式打印ls命令的结果 当前,ls命令会导致: Apple Boy Chart Dock apples boys charts docks 我想要的是: Apple apples Boy boys Chart charts Dock docks 这是可能的吗?只需将结果通过管道传输到。ls(至少如果您使用的是GNU coreutils版本;ls--version,以检查是否正确)根据当前区域设置对文件名进行排序 可用区域设置的设置因系统而异(locale-

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

当前,ls命令会导致:

Apple
Boy
Chart
Dock
apples
boys
charts
docks
我想要的是:

Apple
apples
Boy
boys
Chart
charts
Dock
docks
这是可能的吗?

只需将结果通过管道传输到。

ls
(至少如果您使用的是GNU coreutils版本;
ls--version
,以检查是否正确)根据当前区域设置对文件名进行排序

可用区域设置的设置因系统而异(
locale-a
用于列表),但在我的系统上:

LC_COLLATE=en_US.utf8 ls
b
b
之前使用
a
a
对名称进行排序,尽管它可能与您要查找的顺序不完全一致

即使当
ls
在多列中列出文件时,这也能起作用,而
sort-f
很难做到这一点


(我将
$LC\u COLLATE
设置为
C
,以便按ASCII顺序进行区域敏感排序。)

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

export LANG=en_US.UTF-8
export LC_COLLATE="en_US.UTF-8"
这在OS X上不起作用。

添加到。配置文件:

alias llg='ls -ltr | grep -i'
然后可以使用以下命令:

llg "week"

有趣的我的一个沮丧之处是,我得到了不区分大小写的排序,这让我感到非常恼火,因为我已经习惯于利用区分大小写的版本来获取列表开头以大写字母开头的文件,但它们不再出现在列表中。这是因为我使用了
en_US.utf8
locale,这基本上是正确的。所以,我同意基思的大部分观察。可能是@LiranH的重复。这怎么可能是重复的?这是5.5年前提出的。。你提到的问题是三个月前提出的。。我想你把它倒过来了。。哈哈,这篇文章甚至在你自己的文章的公认答案中被引用了。@Andrew我和你的想法一样,但在这里被Zoe纠正了(在这篇文章的下面)。所以@keith我在谷歌上快速搜索了一下,不确定如何更改我的。我想你可能是对的,这就是我需要的,这应该是一个.bashrc文件中的东西吗?看起来我的语言环境设置为:LANG=“en_US.UTF-8”LC\u COLLATE=“en_US.UTF-8”@Andrew:这就像设置任何其他环境变量一样(别忘了导出它)。如果您总是想要相同的设置,那么将适当的命令添加到
.bashrc
可能是一种方法。请注意,您的区域设置还将影响shell通配符扩展(
echo*
),甚至影响
sort
命令。但是使用
LC\u COLLATE=“en\u US.UTF-8”
您应该可以得到您想要的订单。你用的是什么系统?现在我用的是mac,但问题更多的发生在工作中,在solaris机器上。@Andrew:好的,我主要用Linux。检查您系统的手册页和/或到处玩,看看
ls
和其他命令如何响应区域设置。@伊曼纽尔:对,我不希望
LC\u COLLATE=C
对您有用。它确实对我有用,因为我需要简单的ASCII排序,前面是
A
Z
前面是
A
Z
t
r
选项告诉
ls
按时间顺序排序,最早排序,最晚排序。OP希望按名称排序,不区分大小写。
llg "week"