Çözüm
-c(Veya --total) seçeneğini sağlayarak, du(1)genel bir toplam üretmesi talimatını verebilirsiniz. Uygulamanız du(1)bu seçeneklerden birini destekliyorsa, aşağıdaki komutu kullanarak istediğiniz efekti elde edebilirsiniz:
$ find . -name 'flibble*' -ctime +90 -exec du -shc {} +
DÜZENLEME: Dosya sayısı sisteminizin izin verdiği maksimum parametre sayısını aşarsa findyine de commandbirden çok kez yürütülebileceğini unutmayın . Bazı uygulamaları du(1), belirtilen sınırlamadan muzdarip olmayan bir dosyadan dosya adlarının okunmasını da destekler:
$ find -name 'flibble*' -ctime +90 -print0 > filenames
$ du -shc --files0-from=filenames
açıklama
Semantik arasındaki fark -exec command {} \;ve -exec command {} +şu şekildedir:
command {} \;commandher sonucu için bir kez yürütür find. Sonucun yerine yol adı iletilir {}.
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} \;
1
2
3
command {} +commandtüm sonuçlar alındığında yürütür . Sonuçların yol adları yerine geçilir {}.
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} +
1 2 3
-print0Seçenek neden find(1)standart çıktı null karakteri ile ayrılmış bulunan dosya yazdırmak için, ve --files0-fromopsiyon neden du(1)boş ayrılmış dosya adlarını okumak için. Yeni satır karakterinden farklı olarak, null karakter bir dosya adında görünmeyebilir, bu nedenle çıktı kesin değildir.
Ait seçenekleri hakkında daha fazla bilgi edinmek için du(1)ve find(1)istediğinizde, ilgili klavuz sayfalarını danışmalısınız:
$ man du
$ man find