du komutu ile --exclude öğesini kullanma

Bu muhtemelen basit bir şey ama çalışmasını sağlayamıyorum. DU'yu belirli dizinler hariç dosyaların toplam boyutunu almak için kullanmaya çalışıyorum. Uploads adlı belirli bir dizini hariç tutmam gerekiyor, ancak uploads adlı her dizini değil. Örneğin, dosya yapım biraz şuna benziyor:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

Aşağıdaki komutu çalıştırabilirim:

du -ch --exclude=uploads* 

ve bana tüm "uploads" dizinleri hariç dosya boyutunu veriyor. Ancak, belirli dizinleri (ve tüm alt dizinlerini) hariç tutmaya çalıştığımda başarısız oluyorum. Şunun varyasyonlarını denedim:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

ama bir türlü çözemiyorum. Belirli bir dizini nasıl hariç tutabilirim?

Çözüm

Neredeyse buldunuz :)

du -ch --exclude=./relative/path/to/uploads

Sonunda yıldız işareti olmadığına dikkat edin. Yıldız işareti, "upload" altındaki tüm alt dizinlerin atlanması gerektiği anlamına gelir - ancak doğrudan bu dizindeki dosyalar atlanmamalıdır.

Yorumlar (7)

Birden fazla dizini hariç tutmak için --exclude bayrağını tekrar geçirmeniz yeterlidir.

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude
Yorumlar (1)

sanal dosya sistemlerini şu şekilde atlamak harika

du -hsx --exclude=/{proc,sys,dev} /*
Yorumlar (0)