2013-10-23 81 views
0

假設Ubuntu上的目錄結構爲/home/f1/a,/home/f2/a,/home/f3/a/home/f4/a。假設我的目標是知道每個f1,f2,f3,f4內的文件夾a的磁盤大小(不是這些文件夾內文件的大小,而是文件夾本身的大小);並在/home的時候這樣做。如何查找同名子文件夾的磁盤大小

問題什麼是我可以從/home運行的shell命令來獲取每個文件夾的磁盤大小a

在我的現實世界的例子,我有這些目錄的60(即~/f1/a~/f2/a,...,~/f60/a),這樣就不會垃圾郵件太多的其他信息最好的命令。

回答

1

此代碼的工作:

for i in `seq 1 60` 
do 
    du -ch ~/f$i/a | tail -n 1 | awk -F' ' {'print $1'} 
done 
+1

'du -ch'是正確的答案,但'grep total'不是最好的解決方案。 如果是非英語本地語言,請考慮'tail -n 1'而不是硬代碼'total'。 – afpro

+0

上面假定有一定數量的文件,即只有60個,如果有60個以上的文件? – MattSizzle

+0

@MattGreen我們可以用'read x'獲得一個數字,然後用'seq 1 $ x'替換'seq 1 60'# –

0

下面會給你的文件夾大小下來休息一下,總共在結束對所有文件夾不管多少,只要他們開始使用F有並在/ home

du -ch /home/f*/a/ 

輸出:

24K  /home/mgreen/f11/a/ 
4.0K /home/mgreen/f12/a/ 
4.0K /home/mgreen/f61/a/ 
32K  total 

我認爲你正在尋找舒美特更喜歡下面的,雖然這將讓你爲每個/ a /文件夾獲取一個總數,而不是所有的總數。

for i in $(ls /home/mgreen |grep 'f[0-9]');do for d in $(ls /home/mgreen/$i|grep "a");do printf "$i$d " ;du -sch /home/mgreen/$i/$d | tail -n 1 | awk '{print $1}';done ;done 

其中$ i等於頂級目錄f1-100,$ d等於'a'目錄。額外的循環將$ a分配給一個變量進行打印。

輸出:

f11/a/ 24K 
f12/a/ 4.0K 
f61/a/ 4.0K 

希望這有助於。