ls sort by size:在 Linux 命令行中按大小列出文件
了解在 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
获取目录中最大的 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
-s
(小写 s)选项按大小对文件进行排序。那是错误的。小写的 s 显示每个条目的块大小。要排序,请使用 -S
(大写 S)。结论
现在您知道如何使用 ls 命令根据文件大小对文件进行排序。我希望你一路上学到了一些其他的东西。
如果您有兴趣了解更多信息,我推荐以下三个主题:
了解有关 ls 命令的更多信息,以便您可以了解各种列表选项
了解有关 du 命令的更多信息以获取文件和目录的大小
了解有关用于对文件内容进行排序的排序命令的更多信息
继续订阅更多 Linux 技巧和教程。