du命令是disk usage
的縮寫,打印文件或目錄使用的磁盤空間量估算。這對于查找占用大量磁盤空間的文件和目錄非常有用。
du
命令的默認行為是打印文件目錄占用的磁盤空間,而不是真是的文件大小。要打印文件目錄真實大小,請使用du
命令--apparent-size
選項。
要理解這一點請先閱讀我們教程什么是inode。然后理解這句話:如果磁盤的分區的塊大小4096字節,那么即使文件沒有4096字節的大小也會占用一個塊的大小。
du 命令詳解
du
命令的語法形式du [OPTIONS]... FILE...
。[OPTIONS]
是du命令的選項,可選參數,FILE
可以是一個或者多個文件。
如果指定的FILE
是目錄,du
命令統計目錄中每個文件大小,最后是目錄的總大小。如果FILE
未指定,du命令打印當前工作目錄的磁盤使用情況。
在不指定任何選項運行du
命令時,以千字節為單位顯示文件目錄的磁盤使用情況。您也可以指定多個文件和目錄作為du
命令的參數。
du ~/Documents
du ~/Documents ~/Pictures ~/.zshrc
如果當前用戶對指定文件目錄沒有讀取權限,終端將會打印消息du:cannot read directory '/root': Permission denied
無法讀取目錄,權限拒絕。
在這種情況下,您需要在以root或者具有sudo權限用戶運行du
命令,例如命令sudo du /root
統計root用戶的家目錄。
du 命令單位
du
命令默認使用千字節的單位打印文件目錄的大小。但是如果你需要指定du
命令打印大小的單位可以使用選項--block-size
指定。
也可以使用一些du
命令預定義的單位選項,例如選項-m
以兆字節打印文件目錄大小,也就是單位M。
du
命令的--block-size
選項可以接受的單位可以是任意大小的數值和單位組成的值包括M,G,T等。
例如命令du -csh --block-size=500M ~/Downloads
使用500M的大小作為單位,du命令將會文件目錄大小除以500M打印大小。
du -csh --block-size=1G ~/Downloads
du -csh --block-size=500M ~/Downloads
du 命令自動選擇大小單位
通常在很多情況下,我們只需要使用du
命令的-h
選項就足夠應付日常的使用。
du
命令的-h
選項會自動根據文件大小選擇合適的大小單位打印目錄文件夾的大小。
例如命令sudo du -h /var
打印/var/lib
文件目錄大小,大文件與目錄將會以1K,234M,2G的方式打印。
sudo du -h /var
4.0K /var/log/sysstat
.......
46G /var
du 命令查看目錄文件夾大小
要打印指定目錄的總大小,而不打印子目錄和文件的大小,請使用du
命令-s
選項。
例如命令sudo du -sh /var
命令僅打印/var目錄的大小,其子目錄與文件將不會打印。
du
命令默認使用千字節的單位打印文件目錄的大小,在這里我們組合使用du
命令的-h
選項自動根據文件大小選擇合適的大小單位打印目錄文件夾的大小。
sudo du -sh /var
46G /var
du 命令統計多個目錄總大小
du
命令的-c
選項可以合并多個目錄的總大小,當您要獲取兩個或多個目錄的合并后的總大小時,此選項非常有用。
例如命令sudo du -csh /var/log /var/lib
將會打印/var/lib
與/var/log
兩個目錄大小和合并后的大小。
你可能看到du
命令還組合使用-s
選項,因為僅需要打印指定目錄大小,所以不需要打印子目錄文件大小,-h
表示以友好的閱讀格式打印總大小。
sudo du -csh /var/log /var/lib
837M /var/log
3.1G /var/lib
3.9G total
du 命令指定目錄深度級別
默認情況下,du命令將會遞歸遍歷指定目錄的所有子目錄,然后以千字節打印文件目錄的大小。
如果要打印指定目錄深度級別的目錄大小,請使用du
命令的--max-depth
選項并指定子目錄級別。
例如命令sudo du -h --max-depth=1 /var/lib
僅打印/var/lib
下第一級目錄的總大小。
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 命令使用通配符指定多個文件目錄
du
命令還允許您使用通配符模式,同時指定多個文件目錄統計大小。這在統計指定文件類型,匹配文件目錄名稱時非常有用。
例如命令sudo du -csh ~/Do*
打印家目錄中以Do
開頭的所有目錄的大小。通常是/home/myfreax/Documents
與/home/linux/Downloads
目錄的大小。
sudo du -csh ~/Do*
4.0K /home/myfreax/Documents
2.0G /home/myfreax/Downloads
2.0G total
du 命令按大小排序打印
du
命令可以與接受標準輸入的命令通過管道組合使用,來實現一些強大功能,比如對du
命令的標準輸出按大小進行排序。
例如命令sudo du -h /var/ | sort -rh | head -5
打印/var
目錄的前5大文件與目錄,這樣你就可以找指定目錄的巨大的文件與目錄,有點類似磁盤使用率管理器。
這里解釋一下命令實現,du -h /var/
命令打印以友好閱讀格式遞歸打印/var
目錄文件大小。
然后du
命令的結果,也就是標準輸出通過管道|
傳遞到sort
命令,sort命令的-r
選項反向排序du命令的結果,-h
按可讀的數字大小進行排序。
最后將sort
命令的排序結果通過管道傳遞給head
命令打印前5行記錄,經過sort命令排序后,最大文件目錄排在前面,也就是前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
結論
至此,您已了解如何在Linux使用du
命令統計目錄文件的大小。與df
命令打印已掛載文件系統的磁盤使用情況的信息不同,
du
命令可以評估指定文件或目錄的大小磁盤空間。要獲取更多選項信息,可以在在終端運行命令man du
。如果您有任何疑問或反饋,請在下面發表評論。
-
Linux
+關注
關注
87文章
11351瀏覽量
210498 -
磁盤
+關注
關注
1文章
380瀏覽量
25294 -
命令
+關注
關注
5文章
697瀏覽量
22126
發布評論請先 登錄
相關推薦
評論