按名称对“ls”输出进行排序

177

你能按名称对 ls 列表进行排序吗?


13
如果没有任何参数按名称排序,你可能需要检查ls是否已被别名替代,或者仅使用完整路径调用它,这将消除任何现有的别名。 - tvanfosson
你确定要按名称排序而不是按类型排序(例如,先目录再文件)吗? - curtisk
1
大写字母在小写字母之前,因此文件Z在文件a之前...我该如何解决这个问题? - ArtOfWarfare
1
手册中说“分别按字典顺序排序”。文件根据第一个字符进行排序:数字[0..9]、大写字母[A..Z]和小写字母[a..z]。 - Gürol Canbek
1
@user770 使用“alias”命令(不带任何参数)列出您设置的任何别名,https://en.wikipedia.org/wiki/Alias_(command) - tvanfosson
显示剩余3条评论
15个回答

2
你可以尝试: ls -lru
-u 与 -lt 配合使用:按访问时间排序并显示。

1
我使用Ubuntu/Debian。
我有从file1到file20的文件。'ls'命令会以无序的方式显示它们,而我找到的最好的快速排序方法是使用ls -v命令。
在man手册(man 1 ls)中的描述解释了这一点。
-v       natural sort of (version) numbers within text

我用文件夹进行了测试,例如ls -vd1 */将按顺序仅显示文件夹。它似乎依赖于ASCII值,因此您将看到大写字母始终优先于小写字母。这是因为大写字母始终具有较低的ASCII值。

0
In Debian Jessie, this works nice:

ls -lah --group-directories-first

# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha

# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --

0
ls | sort -V

如果您有编号的文件,例如

,它将很好地排序。
File-8.webvtt
File-9.webvtt
File-10.webvtt
File-11.webvtt

-1
我使用以下命令按名称对目录内容进行了排序: ls -h

2
ls 命令不带任何选项已经按名称排序,-h 选项只是以“人类可读”的形式打印大小等信息。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接