如何让 ls 命令按数字顺序显示?

问题描述 投票:0回答:4

我在目录中创建了 3 个文件,名称如下:

11 13 9

问题,因为我在

9
之后创建了文件
13
,当我执行
13
命令时,它被放置在文件
ls
之后。

您是否有任何想法让

ls
命令按数字顺序对文件进行排序,如下所示:

9 11 13

ls
4个回答
24
投票

查看

man
页面中的
ls
。 从那里开始-

-v 文本中(版本)数字的自然排序。

您会发现命令

ls -v
可以满足您的要求。

如果您希望文件名位于不同的行,那么您可以执行

ls -1v


3
投票

不幸的是,macOS 和 FreeBSD 上的

ls -v
不会对文件列表执行自然排序。 FreeBSD ls 根本不支持这个标志。在 macOS 上它可用于

强制打印未经编辑的非图形字符;当输出不输出到终端时,这是默认设置。

如果您非常需要 ls 实用程序的 GNU 扩展

-v
,您可以安装 GNU ls,然后使用
alias ls=gls
使用 GNU ls 而不是默认的 ls。 GNU ls 通常带有
coreutils
软件包,因此,例如,

  • 在 macOS 上:
    brew install coreutils
  • 在 FreeBSD 上:
    pkg install coreutils

0
投票

仅包含行但不包含列的列表:

ls -x

使用tr避免多行输出:

ls | tr "\n" " "

并确保准确地强制升序:

ls -v | tr "\n" " "

来自 linux.org 关于 ls 的一些有用且重要的信息。


0
投票

如果您使用的是 MacOS,其中 - 正如@eris 所指出的 -

-v
不受支持,您可以将输出通过管道传输到
sort
来实现您想要的:

ls -1 | sort -n

请注意,这是数字 1,而不是小写 L。

ls -1
每行列出一个文件,但没有
-l
的附加列。这使得它适合通过管道传输到
sort
,其中
-n
--numeric-sort
的简写:“根据字符串数值进行比较”

© www.soinside.com 2019 - 2024. All rights reserved.