Burada, çoğu yinelenen birçok cevap var. Üç eğilim görüyorum: ikinci bir du çağrısı aracılığıyla boru bağlantısı yapmak, karmaşık kabuk / awk kodu kullanmak ve diğer dilleri kullanmak.
İşte olan POSIX uyumlu çözüm kullanarak du ve awk her sistem üzerinde çalışması gerekir.
-x
Aynı dosya sisteminde kalmamızı sağlamak için ekleyerek biraz farklı bir yaklaşım izledim (bu diske çok az yer kapladığımda sadece bu işleme ihtiyacım var, bu yüzden neden bu FS ağacının içine yerleştirdiğim veya taşındığım ve geri bağlanmış?) ve görsel ayrıştırmayı kolaylaştırmak için sabit birimler gösteriliyor. Bu durumda, genellikle sıralama yapmamayı tercih ederim, böylece hiyerarşik yapıyı daha iyi görebilirim.
sudo du -x | awk '
$1 > 2^20 { s=$1; $1=""; printf "%7sG%s\n", sprintf("%.2f",s/2^21), $0 }'
(Bu tutarlı birimlerinde olduğundan, daha sonra ekleyebilirsiniz | sort -n
Eğer gerçekten isterseniz sıralama ed sonuçları.)
Bu, (kümülatif) içeriği 512 MB'ı geçmeyen dizgileri filtreler ve ardından boyutları gigabayt olarak görüntüler. Varsayılan olarak, du 512 bayt blok boyutunu kullanır (bu yüzden 2 awk durumu 20 bloktan 512MB ve onun 2 21 - Kullanabileceğimiz bölen GB birimleri dönüştürür du -kx
ile $1 > 512*1024
ve s/1024^2
daha insan tarafından okunabilir olması için). Awk koşulunun içinde, s
boyuta ayarlıyoruz böylece satırdan ( $0
) kaldırabiliriz . Bu, sınırlayıcıyı (tek bir boşluğa daraltılmış olan) korur, bu nedenle final %s
, bir boşluğu ve daha sonra toplanan direktörün adını temsil eder. %7s
yuvarlatılmış %.2f
GB boyutunu hizalar ( %8s
> 10TB'niz varsa artırın ).
Buradaki çözümlerin çoğundan farklı olarak, bu, adlarında boşluk bulunan dizinleri doğru şekilde destekler (bunun da dahil her çözüm, satır sonları içeren dizin adlarını yanlış yönlendirir).