在 Linux 中列出每个文件和目录的大小并按大小排序


列出每个文件和目录的大小很有用,因为它可以帮助用户根据大小对其进行排序。根据大小对文件进行排序对于释放空间、使文件更井然有序等非常必要。您可以通过命令行和图形方法来组织 Linux 文件系统。

它可以帮助您根据其可用内容快速找到文件和目录。因此,在本篇长指南中,我们将解释多种轻松列出每个目录并根据其在 Linux 中的大小对其进行排序的方法。

在 Linux 中列出每个文件和目录的大小并按大小排序

您可以轻松地根据大小、名称、修改时间等在 Linux 中列出文件。在这里,我们必须根据每个文件和目录的大小对其进行排序。您可以使用命令行和 GUI 方法按大小对文件和目录进行排序。让我们讨论这两种方法,并了解如何根据其大小对文件进行排序。

命令行方法

主要使用 ls 命令在 Linux 中对文件进行排序。使用 du 和 find 命令,您也可以根据大小对文件进行排序。

ls 命令

ls 命令是 Linux 和 Unix 系统中用于列出目录内容的便捷工具。如果此命令不使用操作数或选项,则默认情况下它会在屏幕上显示当前目录的内容。

如果 ls 命令不使用 --sort、-l 等任何选项,则默认情况下它会按字母顺序对条目进行排序。现在我们将了解如何使用各种 ls 命令选项在 Linux 中按文件大小对其进行排序。首先,我们将列出目录中的所有文件以及与其关联的隐藏文件。

:~$ ls -la
total 180 
drwxr-x---    20 prateek prateek 4096 Mar 3 20:42 
drwxr-xr-x     3 root root 4096 Dec 24 14:50 
-rw            1 prateek prateek 18171 Mar 6 18:03 .bash_history 
-rw-r--r--     1 prateek prateek 220 Dec 24 14:50 .bash_logout 
-rw-r--r--     1 prateek prateek 3771 Dec 24 14:50 .bashrc 
drwx          15 prateek prateek 4096 Feb 12 14:21 
drwx          18 prateek prateek 4096 Feb 12 14:21 
drwxr-xr-x     2 prateek prateek 4096 Dec 24 14:56 
drwxr-xr-x     4 prateek prateek 4096 Feb 18 23:38 
drwxr-xr-x     2 prateek prateek 4096 Feb 20 13:09 
-rw-rw-r--     2 prateek prateek 724 Feb 27 21:25 example.txt 
-rwxrwxr-x     1 prateek prateek 88 Mar 3 18:00 file.sh 
drwx           2 prateek prateek 4096 Feb 13 18:28

在上面的命令中,我们使用了 −

  • -l − 所有文件的长列表。

  • -a − 包括隐藏文件。

您可以在上面的命令中使用 -A 选项而不是 -a 来排除隐藏文件 (.)

:~$ ls -lA
total 172 
-rw          1 prateek prateek 18171 Mar 6 18:03 .bash_history 
-rw-r--r     1 prateek prateek 220 Dec 24 14:50 .bash_logout 
-rw-r--r     1 prateek prateek 3771 Dec 24 14:50 .bashrc 
drwx        15 prateek prateek 4096 Feb 12 14:21 
drwx        18 prateek prateek 4096 Feb 12 14:21 
drwxr-xr-x   2 prateek prateek 4096 Dec 24 14:56 
drwxr-xr-x   4 prateek prateek 4096 Feb 18 23:38 
drwxr-xr-x   2 prateek prateek 4096 Feb 20 13:09 
-rw-rw-r     2 prateek prateek 724 Feb 27 21:25 example.txt 
-rwxrwxr-x   1 prateek prateek 88 Mar 3 18:00 
drwx         2 prateek prateek 4096 Feb 13 18:28

在所有上述文件中,您可以看到它们的详细信息,例如大小、权限等,但所有这些都没有按其大小排序。

您可以通过在 ls 命令中使用 -s 标志根据其大小列出它们,如下所示 −

:~$ Ls -laS
total 180 
-rw         1 prateek prateek 18171 Mar 6 18:03 .bash_history 
-rw-r--r    1 tcpdump tcpdump 11517 Feb 25 23:35 prateek.pcap 
-rw         1 prateek prateek 10422 Feb 12 13:46 .viminfo 
drwxr-x--- 20 prateek prateek 4096 Mar 3 20:42 
drwxr-xr-x  3 root root 4096 Dec 24 14:50 
drwx       15 prateek prateek 4096 Feb 12 14:21 
drwx       18 prateek prateek 4096 Feb 12 14:21 
drwxr-xr-x  2 prateek prateek 4096 Dec 24 14:56 
drwxr-xr-x  4 prateek prateek 4096 Feb 18 23:38 
drwxr-xr-x  2 prateek prateek 4096 Feb 20 13:09

从上面的输出中可以看到,它按从大到小(降序)列出所有文件。您可以使用 -r 标志将这些文件从小到大(升序)排序。这里 -r 表示反向顺序。

:~$ ls -laSr
total 180 
-rW-r--r-- 1 prateek prateek 0 Dec 24 14:57 .sudo_as_admin_successful 
-rW-rW-r-- 1 prateek prateek 16 Mar 4 19:14 myfile.txt 
-rW        1 prateek prateek 20 Feb 13 21:11 .lesshst 
-rW-rW-r   1 prateek prateek 34 Feb 28 20:34 Linux.txt 
-rWXrWXr-x 1 prateek prateek 54 Feb 25 14:55 source.sh -
rW-rW-r    1 prateek prateek 66 Jan 27 19:03 .selected editor 
-rW-rW-r   1 prateek prateek 76 Feb 28 20:11 Linuxl.txt 
-rWXrWXr-x 1 prateek prateek 88 Mar 3 18:00 
-rW-r--r   1 prateek prateek 220 Dec 24 14:50 .bash_logout 
-rW-rW-r   2 prateek prateek 724 Feb 27 21:25 tutorials.txt

使用上面的命令,您还可以使用 -R 标志递归地列出子目录

:~$ ls -laSrR
46F505F43 
-rw  1 prateek prateek 311803E9D 10884 Dec 26 21:01 OBB2OCB4AAAA42A943D95DBAED3CE2
-rw  1 prateek prateek 0676BB5A1 10888 Dec 26 21:01 A68B2B01F4C5FD751C8FAAACCC3B17
-rw  1 prateek prateek E8F6A55609 10888 Dec 26 21:01 40328257F373FC856156C6F048B053
-rw  1 prateek prateek 53D066F16 10892 Dec 26 21:01 B675C5F5FFACF874E705146520BEB2
-rw  1 prateek prateek 135B5554CD 10893 Feb 2 22:29 EA34D1B92FA40A8D3F43ABF2B47213
-rw  1 prateek prateek 1F53F3458E 10893 Dec 26 21:01 C59AA89A6D8D512BA32E39B847E2C3
-rw  1 prateek prateek 20217CC51 10893 Dec 26 21:01 57419DD3200B2512D029506439BE37

您可以使用 -h 选项以人类可读的格式显示这些输出中的文件大小。

:~$ ls -laSrRh
46F505F43 
-rw  1 prateek prateek 311803E9D 11K Dec 26 21:01 OBB2OCB4AAAA42A943D95DBAED3CE2
-rw  1 prateek prateek 0676BB5A1 11K Dec 26 21:01 A68B2B01F4C5FD751C8FAAACCC3B17
-rw  1 prateek prateek E8F6A55609 11K Dec 26 21:01 40328257F373FC856156C6F048B053
-rw  1 prateek prateek 53D066F16 11K Dec 26 21:01 B675C5F5FFACF874E705146520BEB2
-rw  1 prateek prateek 135B5554CD 11K Feb 2 22:29 EA34D1B92FA40A8D3F43ABF2B47213
-rw  1 prateek prateek 1F53F3458E 11K Dec 26 21:01 C59AA89A6D8D512BA32E39B847E2C3
-rw  1 prateek prateek 20217CC51 11K Dec 26 21:01 57419DD3200B2512D029506439BE37

在上面的输出中,您可以看到文件的单位大小以千字节 (K) 打印。默认情况下,它仅以千字节打印文件大小。您还可以以特定的单位(例如千兆字节、兆字节等)显示文件大小。为此,请使用以下命令 −

:~$ ls -laSrRh --block-size=M
total 1M 
-rW-r--r--  1 prateek prateek OM Dec 24 14:57 .sudo_as_admin_successful 
-rW-rw--r-- 1 prateek prateek 1M Mar 4 19:14 myfile.txt -
-rw----     1 prateek prateek 1M Feb 13 21:11 .lesshst 
-rw-rw-r--- 1 prateek prateek 1M Feb 28 20:34 Linux.txt 
-rwxrwxr-x  1 prateek prateek 1M Feb 25 14:55 soruc.sh 
-rw-rw-r--- 1 prateek prateek 1M Jan 27 19:03 .selected_editor 
-rw-rw-r--- 1 prateek prateek 1M Feb 28 20:11 Linuxl.txt 

在上面的命令中,我们以兆字节 (M) 显示了文件大小。您还可以使用以下命令排除目录,当按其大小对所有文件进行排序时 −

:~$ ls -laSrRh | grep -v '^d'
16K -rw  FE23745F2C8 prateek prateek Feb 25 14:46 CB77C383B7CB98DBBF1B72834482
16K -rw  A173A37ADFFD prateek prateek Feb 7 13:59 CB570E0E6B203DA159A3299C1CBC
20K -rw  70EFB03EECE prateek prateek Feb 2 21:39 CB4E5366CE0DA21FE2642B99C61B
76K -rw  ED96AC4CAEB prateek prateek Feb 28 20:02 CB262BB6FA06C62CE4CE9464940D
52K -rw  Q9B16E211B07 prateek prateek Feb 27 21:26 CB259E3298B967ABA5782E6B1D38
12K -rw  135B5554CD prateek prateek Dec 26 21:01 CB1080EDCC82BFOFB11A6023E173 

du 命令

通过 du 命令,您也可以在指定的文件参数中对文件进行排序。要通过 du 命令根据其大小对目录和文件进行排序,请使用以下命令 −

:~$ du -ah | sort -h
4.0K ./snap/root-framewor /910/.local/s are/mime/application/vnd.oasis.open'o cument.graphics-template.xml 
4.0K ./snap/root-framework/910/.1ocal/share/mime/application/vnd.oasis.opendo cument.graphics.xml 
4.0K ./snap/root-framework/910/.1ocal/share/mime/application/vnd.oasts.opendo cument.image.xml 
4.0K ./snap/root-framework/910/.1ocal/share/mime/application/vnd.oasts.opendo cument.presentation-flat-xml.xml 
4.0K ./snap/root-framework/910/.1ocal/share/mime/application/vnd.oasis.opendo cument.presentation-template.xml 
4.0K ./snap/root-framework/910/.1ocal/share/mime/application/vnd.oasis.opendo cument..resentation.xml 

在上面的命令中,-a 显示每个文件的大小以及目录。

通过 du 命令,您还可以通过设置其级别来对文件和目录进行排序。例如,如果您只想对文件排序到第一级,则使用以下命令 −

:~$ du -ah --max-depth=1 | sort -h

注意 − 如果您想按降序对文件大小进行排序,请在上面的命令中添加 -r 标志。

您只能通过上述方法对整个目录(包括其文件)进行排序。因此,此方法对单个文件无效。如果您只需要按其大小对目录进行排序,则可以使用以下 'du' 命令,如下所示 −

:~$ du -h | sort -h
4.0K ./.cache/evolution/addressbook/trash 
4.0K ./.cache/evolution/calendar/trash 
4.0K ./.cache/evolution/mail/trash 
4.0K ./.cache/evolution/memos/trash 
4.0K ./.cache/evolution/sources/trash 
4.0K ./.cache/evolution/tasks/trash 
4.0K ./.cache/gnome-desktop-thumbnailer/gstreamer-1.0 
4.0K ./.cache/ibus-table 
4.0K . .cache mesa shader cache 08

find 命令

您可以使用 find 命令和 sort 命令列出目录。

:~$ find . -type d -ls | sort -n -r
1186380 4 drwxrwxr-x 2 prateek prateek 4096 Feb 25 14:45 ./snap/firefox/2391/.1ocal/share/glib-2.0/schemas 
1186378 4 drwxr-xr-x 2 prateek prateek 4096 Feb 28 23:32 ./snap/firefox/common/.cache/mozilla/firefox/e35175b1.default/safebrowsing/google4 
1186371 4 drwxrwxr-x 3 prateek prateek 4096 Feb 25 14:45 ./snap/firefox/2391/.1ocal/share/glib-2.0 
1186369 4 drwxrwxr-x 2 prateek prateek 4096 Feb 25 14:45 ./snap/firefox/2391/.1ocal/share/icons 
1186366 4 drwxrwxr-x 4 prateek prateek 4096 Feb 25 14:45 ./snap/firefox/2391/.1ocal/share 
1186359 4 drwx  2 prateek prateek 4096 Dec 26 21:00 ./snap/firefox/2391/.config/pulse 
1186357 4 drwxrwxr-x 2 prateek prateek 4096 Feb 28 20:01 ./snap/f irefox 2391 .config ibus

您可以排除目录并仅使用以下 find 命令对文件进行排序 −

:~$ find . -type f -ls | sort -n -r

使用 GUI 方法

文件和目录在 Linux 文件管理器中按字母顺序排序。在此文件管理器中,您可以根据自己的情况设置首选项。您可以通过自定义首选项根据其大小设置文件。

为此,请转到文件管理器以及您要按其大小对文件进行排序的目录和文件夹。之后,单击顶部的向下箭头 (1)。

Figure 1

您可以通过单击上图所示的大小选项 (2) 按文件大小降序对文件进行排序。

结论

因此,这就是您可以用来列出每个目录并根据其在 Linux 中的大小对其进行排序的所有简单方法。通过 Linux 中的 ls 命令,您可以对文件进行排序。使用此命令,我们已经了解了如何使用各种选项根据其大小对文件进行排序,以及如何以人类可读的格式、特定的大小单位、排除隐藏文件等对文件进行排序。除此之外,您还可以通过 find 和 du 命令对文件进行排序。我们还使用这两个命令根据大小列出了文件。

使用 GUI 方法对文件进行排序很容易;您只需点击几下即可完成。您必须通过转到文件管理器来自定义您的首选项。因此,在本文中,我们已经了解了如何使用几乎所有可能的方法按其大小对文件和目录进行排序。

更新于: 2023 年 8 月 22 日

2K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告