首頁 > 軟體

Linux du 命令用法詳解

2020-06-16 16:33:41

du 命令是 “disk usage” 的縮寫,輸出指定檔案或目錄使用的估計磁碟空間量。它對於查詢佔用大量磁碟空間的檔案和目錄非常有用。

如何使用 du 命令

du 命令的一般語法如下:

du [OPTIONS]... FILE...

如果給定的 FILE 是目錄, du 則將匯總該目錄中每個檔案和子目錄的磁碟使用情況。如果未 FILE 指定, du 則將報告當前工作目錄的磁碟使用情況。

在沒有任何選項 du 的情況下執行時,將以位元組為單位顯示給定檔案或目錄及其每個子目錄的磁碟使用情況。

du ~/Documents

您還可以將多個檔案和目錄作為引數傳遞給 du 命令:

du ~/Documents ~/Pictures ~/.zshrc

如果您執行 du 命令的檔案和目錄的是您沒有許可權的檔案或目錄,則會出現類似 “du: cannot read directory” 的內容。在這種情況下,您需要在命令前加上 sudo 。

du 有很多選項,我們將概述最常用的選項。

-a 選項告訴 du 您報告目錄中每個檔案的磁碟空間使用情況。

du -a ~/Documents

通常,您希望以人類可讀的格式僅顯示給定目錄占用的空間。為此,請使用該 -h 選項。

例如,要獲取 /var/lib 其子目錄及其所有子目錄的總大小,請執行以下命令:

sudo du -h /var/lib

我們使用了 sudo,因為 /var/lib 目錄中的大多數檔案和目錄都由 root 使用者擁有,並且普通使用者無法讀取。輸出看起來像這樣:

...
4.0K /var/lib/apt/mirrors/partial
8.0K /var/lib/apt/mirrors
205M /var/lib/apt
2.9G /var/lib/

要僅輸出指定目錄的總大小,而不輸出子目錄的總大小,請使用以下 -s 選項:

sudo du -sh /var

2.9G /var

-c 選項告訴 du 報告總計。當您想要獲得兩個或更多目錄的組合大小時,這非常有用。

sudo du -csh /var/log /var/lib

1.2G /var/log
2.9G /var/lib
4.1G total

如果要顯示 n 級子目錄的磁碟使用情況,請使用該 --max-depth 選項並指定子目錄級別。例如,要獲取有關您將使用的第一級目錄的報告:

sudo du -h --max-depth=1 /var/lib

...
544K /var/lib/usbutils
4.0K /var/lib/acpi-support
205M /var/lib/apt
2.9G /var/lib

du 實用程式的預設行為是重新獲取目錄或檔案使用的磁碟空間。要查詢檔案的“表觀大小”,請使用 --apparent-size 開關。檔案的“表觀大小”是檔案中實際存在的資料量。

sudo du -sh --apparent-size /var/lib

2.9G /var/lib

du 還允許您使用 shell 模式。例如,要在主目錄中獲取以 “Do” 開頭的所有目錄的大小,您將執行:

sudo du -csh ~/Do*

102M /home/linuxize/Documents
358M /home/linuxize/Downloads
460M total

使用 du 與其他命令

du 命令可以與管道的其他命令結合使用。

例如,要列印 /var 目錄中的 5 個最大的目錄,您可以將輸出傳遞 du 給 sort 命令,以按其大小對目錄進行排序,然後將輸出通過管道輸出到 head 僅列印前5個目錄的命令:

sudo du -h /var/ | sort -rh | head -5

4.6G /var/
2.9G /var/lib
2.6G /var/lib/snapd
1.7G /var/lib/snapd/snaps
1.2G /var/log/journal/af8ce1d394b844fea8c19ea5c6a9bd09

總結

到目前為止,您應該很好地理解如何使用該 du 命令。

與 df 不同, df 列印有關安裝檔案系統的磁碟使用情況的資訊,該 du 命令可以估算給定檔案或目錄使用的磁碟空間。

您可以通過在終端中鍵入 man du 來檢視所有可用的 du 命令選項。


IT145.com E-mail:sddin#qq.com