Du komutuyla --exclude kullanma


67

Bu muhtemelen basit bir şey ama çalışmasını sağlayamıyorum. DU eksi belirli dizinleri toplam boyutunu almak için kullanmaya çalışıyorum. Belirli bir dizini hariç tutmam gerekiyor, uploadsama aranan her dizini değil uploads. Ö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 "upload" dizinlerini eksi dosya boyutunu veriyor. Ancak, belirli dizinleri (ve tüm alt dizinlerini) dışlamaya çalışırken başarısız olur. Varyasyonlarını denedim:

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

ama bunu çözecek gibi görünmüyor. Belirli bir dizini nasıl hariç tutarım?


username: store$ du -ch --exclude=./uploadsmağaza dizininden benim için çalıştı (joker karakterli ve jokersiz). Bu komutu tam olarak ve mağaza klasöründen mi çalıştırıyorsunuz? Ve mutlak değil, göreceli yol olmalı (görenleri / baskıları bulur).
Kevin

Yanıtlar:


88

Neredeyse buldun :)

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

Not hiçbir sonunda yıldız işareti. Yıldız işareti, "upload" altındaki tüm alt dizinlerin atlanması gerektiği anlamına gelir ; ancak bu dizindeki dosyalar doğrudan değil.


4
Garip ... dot ( du -sb --exclude=./relative/path/to/uploads) ile sözdizimi benim için çalışmıyor. Bu yapar:du -sb --exclude relative/path/to/uploads
Nux

4
@Nux muhtemelen lezzetinize du. Mine (OSX) bile sahip değil --exclude, -I mask"Belirtilen maskeyle eşleşen dosyaları ve dizinleri yoksay." Çalışma örneğinizde ayrıca bunu göz ardı ediyorsunuz =, bu beni dubiraz daha dutitiz olmanın sadece bir versiyonudur .
phatskat 21:14

Evet [OSX] [1] versiyonu, [Linux du] [2] versiyonunun oldukça basitleştirilmiş versiyonuna benziyor. [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/... [2]: linux.die.net/man/1/du
Nux

Örneğin, burada junk_to_ignore dizinleri ve upload dizinleri hariç olmak üzere birden fazla dizini hariç tutmak istersem?
Kiran K Telukunta 10:16

Neden göreceli bir yolla çalışıyor ancak mutlak bir yolla çalışmıyor? Çok tuhaf!
Nick,

9

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

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

1
Ayrıca kullanabilirsiniz cadu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen

4

sanal dosya sistemlerini bu şekilde atlamak için harika

du -hsx --exclude=/{proc,sys,dev} /*

1

MacOS'ta olmanız gerekiyorsa, GNU Coreutils'i aşağıdaki komutla yükleyin.

brew install coreutils

Coreutils tarafından yüklenen komutların çoğu, ön eklenmiştir gçünkü MacOS'ta önceden kurulmuş bir BSD adaşlığına sahiptirler. Sonra aşağıdakileri yapabilirsiniz.

gdu --exclude=Microsoft /Library/Fonts/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.