排序“ls” 按名称输出

发布于 2024-07-20 03:17:35 字数 90 浏览 10 评论 0原文

您可以按名称对 ls 列表进行排序吗?

Can you sort an ls listing by name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(15

椵侞 2024-07-27 03:17:35

对于简单的事情,您可以将 lssort 结合起来。 对于仅文件名列表:

ls -1 | sort

要按相反顺序对它们进行排序:

ls -1 | sort -r

For something simple, you can combine ls with sort. For just a list of file names:

ls -1 | sort

To sort them in reverse order:

ls -1 | sort -r
ι不睡觉的鱼゛ 2024-07-27 03:17:35

我的 ls 默认按名称排序。 你看到什么了?

man ls 指出:

列出有关文件的信息(默认为当前目录)。 如果未指定 -cftuvSUX--sort,则按字母顺序对条目进行排序。

My ls sorts by name by default. What are you seeing?

man ls states:

List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

甜尕妞 2024-07-27 03:17:35

coreutils 中的 ls 默认执行区域设置感知排序,因此在某些情况下可能会产生令人惊讶的结果(例如,% foo 将在 LANG=en_US 中的 barquux 之间排序。 如果您想要 ASCIIbetical 排序,请使用

LC_ALL=C ls

ls from coreutils performs a locale-aware sort by default, and thus may produce surprising results in some cases (for instance, %foo will sort between bar and quux in LANG=en_US). If you want an ASCIIbetical sort, use

LC_ALL=C ls
梦在夏天 2024-07-27 03:17:35

*nix 工具的美妙之处在于您可以将它们组合起来:

ls -l | sort -k9,9

ls -l 的输出将如下所示

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

因此使用 9,9 您可以对列 9 进行排序code> 到 9 列,即文件名。 您必须提供停止位置,在本例中是同一列。 这些列以 1 开头。

另外,如果您想忽略大小写,请在排序命令中添加 --ignore-case

The beauty of *nix tools is you can combine them:

ls -l | sort -k9,9

The output of ls -l will look like this

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

So with 9,9 you sort column 9 up to the column 9, being the file names. You have to provide where to stop, which is the same column in this case. The columns start with 1.

Also, if you want to ignore upper/lower case, add --ignore-case to the sort command.

一世旳自豪 2024-07-27 03:17:35

仅数字字符串不同的文件可以根据该数字进行排序,前提是该数字前面有分隔符。

在这种情况下,可以使用以下语法:

ls -x1 file | sort -t'<char>' -n -k2

示例:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log

Files being different only by a numerical string can be sorted on this number at the condition that it is preceded by a separator.

In this case, the following syntax can be used:

ls -x1 file | sort -t'<char>' -n -k2

Example:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
天生の放荡 2024-07-27 03:17:35

注意:“a”出现在“Z”之后:

$ touch A.txt aa.txt Z.txt 

$ ls

A.txt Z.txt aa.txt

NOTICE: "a" comes AFTER "Z":

$ touch A.txt aa.txt Z.txt 

$ ls

A.txt Z.txt aa.txt

苦行僧 2024-07-27 03:17:35

从手册页(对于 bash ls):

如果 -cftuSUX 和 --sort 都没有,则按字母顺序对条目进行排序。

From the man page (for bash ls):

Sort entries alphabetically if none of -cftuSUX nor --sort.

凡间太子 2024-07-27 03:17:35

ls -X 可以用于此目的,以防您将 ls 别名设置为更有用的默认值。

ls -X works for that purpose, in case you have aliased ls to a more useful default.

×眷恋的温暖 2024-07-27 03:17:35

ls 实用程序应符合 IEEE Std 1003.1-2001 (POSIX.1) 其中指出:

22027:根据当前语言环境中的整理顺序分别对目录和非目录操作数进行排序。

26027:默认情况下,未指定格式,但输出应按符号名称按字母顺序排序

  • 库或对象名称(如果指定了 -A)
  • 交易品种名称
  • 符号类型
  • 符号的值
  • 与符号关联的尺寸(如果适用)

The ls utility should conform to IEEE Std 1003.1-2001 (POSIX.1) which states:

22027: it shall sort directory and non-directory operands separately according to the collating sequence in the current locale.

26027: By default, the format is unspecified, but the output shall be sorted alphabetically by symbol name:

  • Library or object name, if −A is specified
  • Symbol name
  • Symbol type
  • Value of the symbol
  • The size associated with the symbol, if applicable
夏末 2024-07-27 03:17:35

检查您的 .bashrc 文件中的别名。

Check your .bashrc file for aliases.

厌倦 2024-07-27 03:17:35

您可以尝试:

ls -lru

-u 和 -lt:排序并显示访问时间;

You can try:

ls -lru

-u with -lt: sort by, and show, access time;

絕版丫頭 2024-07-27 03:17:35

我使用 ubuntu/debian。

我有从 file1 到 file 20 的文件。“ls”会乱序显示它们,我发现快速排序它们的最佳方法是 ls -v

手册页中的描述 (man 1 ls)解释说

-v       natural sort of (version) numbers within text

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

I use ubuntu/debian.

I had files from file1 to file 20. 'ls' would display them out of order and the best method I found for ordering them quickly was ls -v

The description in the man pages (man 1 ls) explains

-v       natural sort of (version) numbers within text

I tested this with folders for instance ls -vd1 */ will display only folders in order. It seems to rely on asci values, so you will see capital letters always take precedence over lower case. This is because capitals are always at a lower asci value.

霞映澄塘 2024-07-27 03:17:35
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 --
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 --
南冥有猫 2024-07-27 03:17:35
ls | sort -V

如果您有编号的文件,则会很好地排序,例如

File-8.webvtt
File-9.webvtt
File-10.webvtt
File-11.webvtt
ls | sort -V

will sort nicely if you have numbered files, e.g.

File-8.webvtt
File-9.webvtt
File-10.webvtt
File-11.webvtt
岁吢 2024-07-27 03:17:35

我使用以下命令获取了按名称排序的目录内容:

ls -h

I got the contents of a directory sorted by name using below command:

ls -h

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文