du命令是disk usage的縮寫,打印文件或目錄使用的磁盤空間量估算。這對(duì)于查找占用大量磁盤空間的文件和目錄非常有用。
du命令的默認(rèn)行為是打印文件目錄占用的磁盤空間,而不是真是的文件大小。要打印文件目錄真實(shí)大小,請(qǐng)使用du命令--apparent-size選項(xiàng)。
要理解這一點(diǎn)請(qǐng)先閱讀我們教程什么是inode。然后理解這句話:如果磁盤的分區(qū)的塊大小4096字節(jié),那么即使文件沒有4096字節(jié)的大小也會(huì)占用一個(gè)塊的大小。
du 命令詳解
du命令的語法形式du [OPTIONS]... FILE...。[OPTIONS]是du命令的選項(xiàng),可選參數(shù),FILE可以是一個(gè)或者多個(gè)文件。
如果指定的FILE是目錄,du命令統(tǒng)計(jì)目錄中每個(gè)文件大小,最后是目錄的總大小。如果FILE未指定,du命令打印當(dāng)前工作目錄的磁盤使用情況。
在不指定任何選項(xiàng)運(yùn)行du命令時(shí),以千字節(jié)為單位顯示文件目錄的磁盤使用情況。您也可以指定多個(gè)文件和目錄作為du命令的參數(shù)。
du ~/Documents
du ~/Documents ~/Pictures ~/.zshrc
如果當(dāng)前用戶對(duì)指定文件目錄沒有讀取權(quán)限,終端將會(huì)打印消息du:cannot read directory '/root': Permission denied無法讀取目錄,權(quán)限拒絕。
在這種情況下,您需要在以root或者具有sudo權(quán)限用戶運(yùn)行du命令,例如命令sudo du /root統(tǒng)計(jì)root用戶的家目錄。
du 命令單位
du命令默認(rèn)使用千字節(jié)的單位打印文件目錄的大小。但是如果你需要指定du命令打印大小的單位可以使用選項(xiàng)--block-size指定。
也可以使用一些du命令預(yù)定義的單位選項(xiàng),例如選項(xiàng)-m以兆字節(jié)打印文件目錄大小,也就是單位M。
du命令的--block-size 選項(xiàng)可以接受的單位可以是任意大小的數(shù)值和單位組成的值包括M,G,T等。
例如命令du -csh --block-size=500M ~/Downloads使用500M的大小作為單位,du命令將會(huì)文件目錄大小除以500M打印大小。
du -csh --block-size=1G ~/Downloads
du -csh --block-size=500M ~/Downloads
du 命令自動(dòng)選擇大小單位
通常在很多情況下,我們只需要使用du命令的-h選項(xiàng)就足夠應(yīng)付日常的使用。
du命令的-h選項(xiàng)會(huì)自動(dòng)根據(jù)文件大小選擇合適的大小單位打印目錄文件夾的大小。
例如命令sudo du -h /var打印/var/lib文件目錄大小,大文件與目錄將會(huì)以1K,234M,2G的方式打印。
sudo du -h /var
4.0K /var/log/sysstat
.......
46G /var
du 命令查看目錄文件夾大小
要打印指定目錄的總大小,而不打印子目錄和文件的大小,請(qǐng)使用du命令-s選項(xiàng)。
例如命令sudo du -sh /var命令僅打印/var目錄的大小,其子目錄與文件將不會(huì)打印。
du命令默認(rèn)使用千字節(jié)的單位打印文件目錄的大小,在這里我們組合使用du命令的-h選項(xiàng)自動(dòng)根據(jù)文件大小選擇合適的大小單位打印目錄文件夾的大小。
sudo du -sh /var
46G /var
du 命令統(tǒng)計(jì)多個(gè)目錄總大小
du命令的-c選項(xiàng)可以合并多個(gè)目錄的總大小,當(dāng)您要獲取兩個(gè)或多個(gè)目錄的合并后的總大小時(shí),此選項(xiàng)非常有用。
例如命令sudo du -csh /var/log /var/lib將會(huì)打印/var/lib與/var/log兩個(gè)目錄大小和合并后的大小。
你可能看到du命令還組合使用-s選項(xiàng),因?yàn)閮H需要打印指定目錄大小,所以不需要打印子目錄文件大小,-h 表示以友好的閱讀格式打印總大小。
sudo du -csh /var/log /var/lib
837M /var/log
3.1G /var/lib
3.9G total
du 命令指定目錄深度級(jí)別
默認(rèn)情況下,du命令將會(huì)遞歸遍歷指定目錄的所有子目錄,然后以千字節(jié)打印文件目錄的大小。
如果要打印指定目錄深度級(jí)別的目錄大小,請(qǐng)使用du命令的--max-depth選項(xiàng)并指定子目錄級(jí)別。
例如命令sudo du -h --max-depth=1 /var/lib僅打印/var/lib下第一級(jí)目錄的總大小。
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 命令使用通配符指定多個(gè)文件目錄
du命令還允許您使用通配符模式,同時(shí)指定多個(gè)文件目錄統(tǒng)計(jì)大小。這在統(tǒng)計(jì)指定文件類型,匹配文件目錄名稱時(shí)非常有用。
例如命令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命令可以與接受標(biāo)準(zhǔn)輸入的命令通過管道組合使用,來實(shí)現(xiàn)一些強(qiáng)大功能,比如對(duì)du命令的標(biāo)準(zhǔn)輸出按大小進(jìn)行排序。
例如命令sudo du -h /var/ | sort -rh | head -5打印/var目錄的前5大文件與目錄,這樣你就可以找指定目錄的巨大的文件與目錄,有點(diǎn)類似磁盤使用率管理器。
這里解釋一下命令實(shí)現(xiàn),du -h /var/命令打印以友好閱讀格式遞歸打印/var目錄文件大小。
然后du命令的結(jié)果,也就是標(biāo)準(zhǔn)輸出通過管道|傳遞到sort命令,sort命令的-r選項(xiàng)反向排序du命令的結(jié)果,-h按可讀的數(shù)字大小進(jìn)行排序。
最后將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)計(jì)目錄文件的大小。與df命令打印已掛載文件系統(tǒng)的磁盤使用情況的信息不同,
du命令可以評(píng)估指定文件或目錄的大小磁盤空間。要獲取更多選項(xiàng)信息,可以在在終端運(yùn)行命令man du。如果您有任何疑問或反饋,請(qǐng)?jiān)谙旅姘l(fā)表評(píng)論。
-
Linux
+關(guān)注
關(guān)注
88文章
11767瀏覽量
219100 -
磁盤
+關(guān)注
關(guān)注
1文章
398瀏覽量
26490 -
命令
+關(guān)注
關(guān)注
5文章
755瀏覽量
23767
發(fā)布評(píng)論請(qǐng)先 登錄
linux統(tǒng)計(jì)文件個(gè)數(shù)
Linux文件的復(fù)制、刪除和移動(dòng)命令
Linux目錄的創(chuàng)建與刪除命令
linux下du的功能和常用選項(xiàng)
du 及 df 命令的使用(附帶示例)
如何在Linux中查找文件?
如何使用cp和rsync命令復(fù)制文件和目錄
如何在Linux使用wc命令統(tǒng)計(jì)目錄文件
Linux文件目錄快速自動(dòng)跳轉(zhuǎn)命令
如何在Linux使用du命令統(tǒng)計(jì)目錄文件的大小
評(píng)論