2012-03-20 84 views
11

我試圖使用find和du命名「bak」目錄的大小。使用find&du獲取文件夾的總大小

我這樣做:find -name bak -type d -exec du -ch '{}' \;

但它返回名爲每個文件夾的大小「明博」,而不是總。

無論如何得到它們?謝謝:)

+0

我建議使用'awk'來計算最終總和(不使用''-h' du') – Alex 2012-03-20 21:01:18

+0

@Alex,爲什麼會是首選? – 2012-03-20 21:15:31

回答

16

使用xargs(1),而不是-exec

find . -name bak -type d | xargs du -ch 

-exec執行找到的每個文件的命令(檢查find(1)文檔)。管道到xargs可讓您彙總這些文件名並只運行du一次。你也可以這樣做:

find -name bak -type d -exec du -ch '{}' \; + 

如果你的版本find支持它。

+0

它的工作原理!向我展示了文件夾的總大小。謝謝 – Piokaz 2012-03-20 21:14:39

+1

這對Ubuntu 12.04我不適用。將此建議的結果配置爲awk可以工作:| awk'{sum + = $ 1} END {print sum}' – greggles 2012-12-24 22:01:03

+3

爲了加快速度,您可以添加最大深度,如果您知道要查找的目錄的結構:'find。 -maxdepth 3 -type d -name bak | xargs du -ch --max-depth = 0' – ajpevers 2015-05-21 07:08:15

3

嘗試du -hcs。從手冊頁:

-s, --summarize 
     display only a total for each argument 
+0

同樣的問題,使用-s或不使用。 – Piokaz 2012-03-20 21:06:52

+1

嗯,你試過了嗎?find -name bak -type d -exec du -ch {} +'? – 2012-03-20 21:22:49

+0

試過,似乎我的版本的查找不支持它。 – Piokaz 2012-03-21 13:28:54

0

與find結果飼料杜:

du -shc $(find . -name bak -type d) 
相關問題