GNU ile du
(yani gömülü olmayan Linux veya Cygwin'de), --exclude
eşleştirmek istemediğiniz dosyaları hariç tutmak için bu seçeneği kullanabilirsiniz .
du -s --exclude='*.html' /var/foo
*.pdf
Dosyaları olumlu bir şekilde eşleştirmek istiyorsanız, dosyaları listelemek için başka bir yöntem kullanmanız gerekir ve du
bağımsız değişken başına en az bir çıktı satırı ve seçenekle birlikte genel bir toplam görüntüler -c
. Sen diyebilirsin tail
tüm ama son satırı kaldırmak veya sıra sözcüğü “toplam” kaldırmak için sed. Bir dizindeki dosyaları numaralandırmak için kabuktaki joker karakterleri kullanın.
du -sc /var/foo/*.pdf | tail -n1
du -sc /var/foo/*.pdf | sed -n '$s/\t.*//p'
Alt dizinlerdeki dosyaları da taramanız gerekiyorsa, kabuğunuz bunu destekliyorsa find
bir **/
desen kullanın veya kullanın . Çünkü **/
, bash'da, ilk çalıştırma shopt -s extglob
ve 4.2'ye kadar bash sürümlerinin dizinlere sembolik bağları geçeceğini unutmayın; zsh, bu kutunun dışında çalışır.
du -sc /var/foo/**/*.pdf | tail -n1
Bulma sürümüyle ilgili ek bir sorun, çok fazla dosya varsa , komut satırı uzunluk sınırının altında tutmak için birden fazla find
çalışacak olmasıdır du
. Joker karakter yöntemiyle bu olursa bir hata alırsınız (“komut satırı uzunluk sınırı aşıldı”). Aşağıdaki kod, yeni satır içeren eşleşen bir dosya adınız olmadığını varsayar.
find /var/foo -name '*.pdf' -exec du -sc {} + |
awk '$2 == "total" {total += $1} END {print total}'
du -sh /foo/*.pdf
mısın?