題 Bash:使用1行命令以列表格式顯示每個子目錄大小?


我希望以列表格式獲取目錄及其大小的列表,就像您在執行操作時獲得的那樣 ls -l

問題是有一個單行命令可以做到這一點?我看到其他人有很長的命令只是輸出這個。那太久了。

什麼命令可以執行此操作或可以輕鬆鍵入的命令組合? du -h 給它,但它顯示所有不是我想要的子文件夾。只是當前目錄文件夾。


88
2018-02-19 15:34


起源




答案:


您可能希望按大小查看按目錄排序的目錄:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

47
2018-06-17 23:04





試試這個

du -h --max-depth=1

產量

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

替代

如果 --max-depth=1 有點太長了你的口味,你也可以嘗試使用:

du -h -s *

這用了 -s (--summarize)並且默認情況下只會打印文件夾本身的大小。通過傳遞當前工作目錄中的所有元素(*),它產生類似的輸出 --max-depth=1 將:

產量

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

差異很微妙。前一種方法將顯示當前工作目錄的總大小以及其中包含的所有文件夾的總大小...但最多只能達到1的深度。

後一種方法將計算所有通過項目的總大小 個別地。因此,它包括符號鏈接 lib64 在輸出中,但不包括隱藏的項目(其名稱以點開頭)。它也缺少當前工作目錄的總大小,因為它沒有作為參數傳遞。


116
2018-02-19 15:36



完美答案。在Mac OSX上 --depth 參數無法識別。使用 du -h -d 1 為了相同的結果。 - Dylan


打印磁盤上所有文件夾和隱藏文件的大小:

el@dev /home/el $ du -sh `ls -a`
258M    .
265M    ..
4.0K    .classpath
258M    .git
4.0K    .gitignore
9.0K    nbactions.xml
12K     README
20K     .README.swp
4.0K    run.sh
23K    XmlPostPropagate.php

6
2017-11-06 14:52



但要小心! 為什麼你不應該解析ls(1)的輸出 - Kamil Maciorowski


值得一提的是 NCurses磁盤使用情況 shell命令。

Ncdu是一個帶有ncurses接口的磁盤使用分析器。它是   旨在查找您沒有的遠程服務器上的太空豬   整個圖形設置可用,但它甚至是一個有用的工具   常規桌面系統。 Ncdu旨在快速,簡單且易於使用,   並且應該能夠在任何類似POSIX的環境中運行   安裝ncurses。


1
2018-06-12 12:29