在 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+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告