ls sort by size:在 Linux 命令行中按大小列出文件ls sort by size:在 Linux 命令行中按大小列出文件ls sort by size:在 Linux 命令行中按大小列出文件ls sort by size:在 Linux 命令行中按大小列出文件
  • 业务
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

ls sort by size:在 Linux 命令行中按大小列出文件

发表 admin at 2025年2月28日
类别
未分类
标签

了解在 Linux 终端中使用 ls 命令按文件大小对文件进行排序。另请了解如何查找最大的文件。

ls 命令用于显示目录的内容。使用选项 -l,您可以列出文件和目录及其属性。

大小是 ls -l 命令显示的属性之一。尽管您可以看到文件的大小,但它们是按字母顺序显示的。

如果要查找当前工作目录中最大或最小的文件,可以按大小对文件进行排序。

ls 命令的 -S 选项按大小对文件进行排序。

但是,将其与选项 -h 和 -l 结合使用会更舒服:

ls -lhS

为什么?我会通过例子来详细分享。

按大小对文件排序

Linux中有一个排序命令。但它用于对文件内容进行排序,而不是对文件本身进行排序。

您可以以长列表格式显示当前目录中的文件,以便您可以看到它们的大小:

abhishek@lhb:~/toto$ ls -l
total 404
-rw-rw-r-- 1 abhishek abhishek  41145 May 27 15:24 ads.txt
-rw-rw-r-- 1 abhishek abhishek  45443 May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek  29983 May 27 16:07 bash.pdf
-rw-rw-r-- 1 abhishek abhishek 249773 May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r-- 1 abhishek abhishek   4943 Jun  2 20:09 gnome-console-voiceover
drwxrwxr-x 4 abhishek abhishek   4096 Jun  2 22:09 letters
-rw-rw-r-- 1 abhishek abhishek  12721 May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 abhishek abhishek    143 May 30 12:06 routes.yaml
drwxrwxr-x 2 abhishek abhishek   4096 Jun  2 22:09 words

要按大小对文件进行排序,请在 ls 命令中使用选项 -S。请注意,它是大写的 S,用于排序。

abhishek@lhb:~/toto$ ls -ls
total 404
-rw-rw-r-- 1 abhishek abhishek 249773 May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r-- 1 abhishek abhishek  45443 May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek  41145 May 27 15:24 ads.txt
-rw-rw-r-- 1 abhishek abhishek  29983 May 27 16:07 bash.pdf
-rw-rw-r-- 1 abhishek abhishek  12721 May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 abhishek abhishek   4943 Jun  2 20:09 gnome-console-voiceover
drwxrwxr-x 4 abhishek abhishek   4096 Jun  2 22:09 letters
drwxrwxr-x 2 abhishek abhishek   4096 Jun  2 22:09 words
-rw-rw-r-- 1 abhishek abhishek    143 May 30 12:06 routes.yaml

这很好,但您可以通过添加 -h 选项来使其更好。此选项使 ls 命令的输出以人类可读的格式显示文件大小。

这意味着现在您可以查看按 KB、MB 或 GB 大小排序的文件。

abhishek@lhb:~/toto$ ls -lhS
total 404K
-rw-rw-r-- 1 abhishek abhishek 244K May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r-- 1 abhishek abhishek  45K May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek  41K May 27 15:24 ads.txt
-rw-rw-r-- 1 abhishek abhishek  30K May 27 16:07 bash.pdf
-rw-rw-r-- 1 abhishek abhishek  13K May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 abhishek abhishek 4.9K Jun  2 20:09 gnome-console-voiceover
drwxrwxr-x 4 abhishek abhishek 4.0K Jun  2 22:09 letters
drwxrwxr-x 2 abhishek abhishek 4.0K Jun  2 22:09 words
-rw-rw-r-- 1 abhishek abhishek  143 May 30 12:06 routes.yaml
?
当两个文件大小相同时,它们按字母顺序排序。

按文件大小倒序列出文件

默认情况下,它会排序以将较大的文件放在顶部。您可以颠倒顺序并在底部显示较大的文件。将反向选项 -r 与其余选项放在一起。

ls -lhSr

当目录中有大量文件(如日志文件)并且您希望查看最大的文件时,这特别有用。您无需向后滚动,即可在屏幕上看到更大的文件。

abhishek@linux:~/toto$ ls -lhSr
total 404K
-rw-rw-r-- 1 abhishek abhishek  143 May 30 12:06 routes.yaml
drwxrwxr-x 2 abhishek abhishek 4.0K Jun  2 22:09 words
drwxrwxr-x 4 abhishek abhishek 4.0K Jun  2 22:09 letters
-rw-rw-r-- 1 abhishek abhishek 4.9K Jun  2 20:09 gnome-console-voiceover
-rw-rw-r-- 1 abhishek abhishek  13K May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 abhishek abhishek  30K May 27 16:07 bash.pdf
-rw-rw-r-- 1 abhishek abhishek  41K May 27 15:24 ads.txt
-rw-rw-r-- 1 abhishek abhishek  45K May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek 244K May 26 14:56 cronjob-cheatsheet.png
⚠️
所有这些仅适用于文件,不适用于目录。使用 ls 命令,目录始终显示为 4 KB(块大小)。它们的实际大小通过 du(磁盘使用情况)命令显示。

获取目录中最大的 10 个文件

Linux 命令行的最大优点是您可以组合各种命令并获得不同的结果。

假设您想查看当前目录中一些最大的文件。按大小对文件进行排序,然后通过 head 命令使用管道重定向。

ls -lhS | head -11

在示例中,我使用了 11,因为第一行显示了目录中使用的块总数。

abhishek@linux:~/tutu$ ls -lhS | head -11
total 216K
-rwxr-xr-x 1 abhishek abhishek  74K Jun  2 22:09 cpufetch
-rw-rw-r-- 1 abhishek abhishek  45K Jun  2 22:38 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek  41K Jun  2 22:38 ads.txt
-rwxr-xr-x 1 abhishek abhishek 4.9K Jun  2 22:09 README.md
-rw-rw-r-- 1 abhishek abhishek 4.9K Jun  2 22:38 gnome-console-voiceover
drwxr-xr-x 2 abhishek abhishek 4.0K Jun  2 22:09 doc
drwxr-xr-x 2 abhishek abhishek 4.0K Jun  2 22:09 pictures
drwxr-xr-x 5 abhishek abhishek 4.0K Jun  2 22:09 src
-rwxr-xr-x 1 abhishek abhishek 2.8K Jun  2 22:09 CONTRIBUTING.md
-rwxr-xr-x 1 abhishek abhishek 2.4K Jun  2 22:09 cpufetch.1

您可以使用 tail 命令进行反向排序,但我认为这太多余了。

一切都在当前工作目录中完成。如果您想在系统范围内执行此操作,可以从/开始,但随后您需要使用 root 权限。但 ls 命令不适合这种情况。相反,使用 find 命令查找大于特定大小的文件。

按大小对文件进行排序时包括隐藏文件

如果添加 . (点)位于文件或目录名的开头,它在 ls 命令的正常列表视图中是隐藏的。这些称为隐藏文件。

许多配置文件在普通视图中是隐藏的。在按大小对文件进行排序时,您还应该考虑这些隐藏文件。

选项 -a 显示隐藏文件,包括特殊的 .和..目录:

ls -lahS

请注意输出中的 .member.csv 文件:

abhishek@lhb:~/toto$ ls -lahS
total 428K
-rw-rw-r--  1 abhishek abhishek 244K May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r--  1 abhishek abhishek  45K May 24 09:03 apt-get.pdf
-rw-rw-r--  1 abhishek abhishek  41K May 27 15:24 ads.txt
-rw-rw-r--  1 abhishek abhishek  30K May 27 16:07 bash.pdf
-rw-rw-r--  1 abhishek abhishek  13K Jun  3 09:41 .member.csv
-rw-rw-r--  1 abhishek abhishek  13K May 29 12:29 members.2022-05-29.csv
-rw-rw-r--  1 abhishek abhishek 4.9K Jun  2 20:09 gnome-console-voiceover
drwxrwxr-x  4 abhishek abhishek 4.0K Jun  3 09:41 .
drwxr-x--- 26 abhishek abhishek 4.0K Jun  3 10:19 ..
drwxrwxr-x  3 abhishek abhishek 4.0K Jun  3 10:10 letters
drwxrwxr-x  2 abhishek abhishek 4.0K Jun  2 22:09 words
-rw-rw-r--  1 abhishek abhishek  143 May 30 12:06 routes.yaml

按大小递归排序文件

到目前为止,您只处理了当前目录中的文件。但是子目录中的文件呢?

如果您正在查找当前位置中最大的文件,您还应该考虑在子目录中查找文件。

您可以使用 ls 命令的 -R 选项列出子目录中的文件。

ls -lRS

但是,这不是正确的方法,因为它不会将所有文件排序在一起,而是将它们排序在各自的目录中。

或者,您可以使用 du 命令并将其组合起来,根据文件的大小对文件进行递归排序:

du -ah | sort -hr
?
许多 Linux 用户错误地使用 -s(小写 s)选项按大小对文件进行排序。那是错误的。小写的 s 显示每个条目的块大小。要排序,请使用 -S(大写 S)。

结论

现在您知道如何使用 ls 命令根据文件大小对文件进行排序。我希望你一路上学到了一些其他的东西。

如果您有兴趣了解更多信息,我推荐以下三个主题:

  • 了解有关 ls 命令的更多信息,以便您可以了解各种列表选项

  • 了解有关 du 命令的更多信息以获取文件和目录的大小

  • 了解有关用于对文件内容进行排序的排序命令的更多信息

继续订阅更多 Linux 技巧和教程。

©2015-2025 Norria support@norria.com