du命令是disk usage的縮寫,打印文件或目錄使用的磁盤空間量估算。這對于查找占用大量磁盤空間的文件和目錄非常有用。
du命令的默認行為是打印文件目錄占用的磁盤空間,而不是真是的文件大小。要打印文件目錄真實大小,請使用du命令--apparent-size選項。
要理解這一點請先閱讀我們教程什么是inode。然后理解這句話:如果磁盤的分區(qū)的塊大小4096字節(jié),那么即使文件沒有4096字節(jié)的大小也會占用一個塊的大小。
du 命令詳解
du命令的語法形式du [OPTIONS]... FILE...。[OPTIONS]是du命令的選項,可選參數(shù),FILE可以是一個或者多個文件。
如果指定的FILE是目錄,du命令統(tǒng)計目錄中每個文件大小,最后是目錄的總大小。如果FILE未指定,du命令打印當前工作目錄的磁盤使用情況。
在不指定任何選項運行du命令時,以千字節(jié)為單位顯示文件目錄的磁盤使用情況。您也可以指定多個文件和目錄作為du命令的參數(shù)。
du ~/Documents
du ~/Documents ~/Pictures ~/.zshrc
如果當前用戶對指定文件目錄沒有讀取權(quán)限,終端將會打印消息du:cannot read directory '/root': Permission denied無法讀取目錄,權(quán)限拒絕。
在這種情況下,您需要在以root或者具有sudo權(quán)限用戶運行du命令,例如命令sudo du /root統(tǒng)計root用戶的家目錄。
du 命令單位
du命令默認使用千字節(jié)的單位打印文件目錄的大小。但是如果你需要指定du命令打印大小的單位可以使用選項--block-size指定。
也可以使用一些du命令預(yù)定義的單位選項,例如選項-m以兆字節(jié)打印文件目錄大小,也就是單位M。
du命令的--block-size 選項可以接受的單位可以是任意大小的數(shù)值和單位組成的值包括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選項就足夠應(yīng)付日常的使用。
du命令的-h選項會自動根據(jù)文件大小選擇合適的大小單位打印目錄文件夾的大小。
例如命令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命令默認使用千字節(jié)的單位打印文件目錄的大小,在這里我們組合使用du命令的-h選項自動根據(jù)文件大小選擇合適的大小單位打印目錄文件夾的大小。
sudo du -sh /var
46G /var
du 命令統(tǒng)計多個目錄總大小
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命令將會遞歸遍歷指定目錄的所有子目錄,然后以千字節(jié)打印文件目錄的大小。
如果要打印指定目錄深度級別的目錄大小,請使用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命令還允許您使用通配符模式,同時指定多個文件目錄統(tǒng)計大小。這在統(tǒng)計指定文件類型,匹配文件目錄名稱時非常有用。
例如命令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命令可以與接受標準輸入的命令通過管道組合使用,來實現(xiàn)一些強大功能,比如對du命令的標準輸出按大小進行排序。
例如命令sudo du -h /var/ | sort -rh | head -5打印/var目錄的前5大文件與目錄,這樣你就可以找指定目錄的巨大的文件與目錄,有點類似磁盤使用率管理器。
這里解釋一下命令實現(xiàn),du -h /var/命令打印以友好閱讀格式遞歸打印/var目錄文件大小。
然后du命令的結(jié)果,也就是標準輸出通過管道|傳遞到sort命令,sort命令的-r選項反向排序du命令的結(jié)果,-h按可讀的數(shù)字大小進行排序。
最后將sort命令的排序結(jié)果通過管道傳遞給head命令打印前5行記錄,經(jīng)過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
結(jié)論
至此,您已了解如何在Linux使用du命令統(tǒng)計目錄文件的大小。與df命令打印已掛載文件系統(tǒng)的磁盤使用情況的信息不同,
du命令可以評估指定文件或目錄的大小磁盤空間。要獲取更多選項信息,可以在在終端運行命令man du。如果您有任何疑問或反饋,請在下面發(fā)表評論。
-
Linux
+關(guān)注
關(guān)注
88文章
11641瀏覽量
218197 -
磁盤
+關(guān)注
關(guān)注
1文章
394瀏覽量
26317 -
命令
+關(guān)注
關(guān)注
5文章
746瀏覽量
23464
發(fā)布評論請先 登錄

如何在Linux使用du命令統(tǒng)計目錄文件的大小
評論