2015-07-05 54 views
4

我想創建一個bash腳本,該目錄在目錄foo內查找超過500MB的目錄。如何查找最大的目錄

我有這個命令,它以升序大小順序查找與foo的目錄。

du /foo/* | sort -n 

問題在於它包含父目錄的大小。因此,例如輸出將是:

... 
442790 /foo/bar/baz/qux 
442800 /foo/bar/baz 
442880 /foo/bar 

我希望輸出只顯示/foo/bar/baz/qux。由於父目錄包含/foo/bar/baz/qux,因此它們擁有自己的文件大小,但實際上,如果排除/foo/bar/baz/qux,它們就是小文件夾。


一些僞代碼:

if the current directory is greater than 500mb then 
    check next directory is parent to current directory (i.e `/foo/bar/baz` is parent of `/foo/bar/baz/qux`) then 
     takeaway size of parent from current. 
     if resulting size is greater than 500mb then 
      return row 
     else 
      go to next row 
    else 
     go to next row 
else 
    go to next row 
+0

我現在是從移動應用程序,但我確定有一個'發現'選項來做到這一點。搜索SO。 – rpax

回答

1

隨着GNU find和GNU sort

find /some/dir -type d -exec du -hS {} + | sort -rh 

du -S打印不包括子目錄的目錄的大小。

+0

這不是我想要的。例如,如果'/ foo/bar /'包含很多文件,因此它很大,但是裏面有一個子目錄。它似乎忽略'/ foo/bar'並返回子目錄 – maxisme

+0

好的,請嘗試編輯的答案。 –

+0

作品!謝謝! – maxisme