Menggunakan --exclude dengan perintah du


67

Ini mungkin sesuatu yang mendasar tetapi saya tidak dapat membuatnya bekerja. Saya mencoba menggunakan DU untuk mendapatkan ukuran total file dikurangi direktori tertentu. Saya perlu mengecualikan satu direktori spesifik yang dipanggil uploadstetapi tidak setiap direktori dipanggil uploads. Sebagai contoh, struktur file saya terlihat sedikit seperti ini:

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

Saya dapat menjalankan perintah berikut:

du -ch --exclude=uploads* 

dan itu memberi saya ukuran file dikurangi semua direktori "unggahan". Namun, dalam mencoba mengecualikan direktori tertentu (dan semua sub-direktori) saya gagal. Saya sudah mencoba variasi:

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

tapi sepertinya tidak bisa memahaminya. Bagaimana cara mengecualikan direktori tertentu?


username: store$ du -ch --exclude=./uploadsbekerja (dengan dan tanpa wildcard) untuk saya, dari dalam direktori store. Apakah Anda menjalankan perintah itu dengan tepat dan dari dalam folder toko? Dan itu harus menjadi jalur relatif (yang menemukan melihat / mencetak), bukan absolut.
Kevin

Jawaban:


88

Anda hampir menemukannya :)

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

Perhatikan tidak ada tanda bintang di bagian akhir. Tanda bintang berarti semua subdirektori di bawah "unggah" harus dihilangkan - tetapi bukan file secara langsung di direktori itu.


4
Aneh ... sintaks dengan dot ( du -sb --exclude=./relative/path/to/uploads) tidak berfungsi untuk saya. Ini tidak:du -sb --exclude relative/path/to/uploads
Nux

4
@Nux mungkin rasa Anda du. Milik saya (OSX) bahkan tidak punya --exclude, malah -I maskharus "Abaikan file dan direktori yang cocok dengan topeng yang ditentukan." Dalam contoh kerja Anda, Anda juga menghilangkan =, membuat saya berpikir bahwa ini hanya versi Anda duyang sedikit duberbeda.
phatskat

Ya [OSX] [1] versi tampaknya versi yang lebih disederhanakan dari [Linux du] [2]. [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/… [2]: linux.die.net/man/1/du
Nux

Bagaimana jika saya ingin mengecualikan beberapa direktori misalnya di sini tidak termasuk direktori junk_to_ignore dan mengunggah direktori?
Kiran K Telukunta

Mengapa ini bekerja dengan jalur relatif, tetapi bukan jalur absolut? Sangat aneh!
Nick

9

Untuk mengecualikan beberapa direktori, cukup lewati flag --exclude lagi.

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

1
Anda juga dapat menggunakandu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen

4

luar biasa untuk melewati sistem file virtual seperti itu

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

1

Jika Anda harus menggunakan MacOS, Anda menginstal GNU Coreutils dengan perintah berikut.

brew install coreutils

Sebagian besar perintah yang diinstal oleh Coreutils diawali oleh g, karena mereka memiliki BSD namesake yang sudah diinstal pada macOS. Maka Anda dapat melakukan hal berikut.

gdu --exclude=Microsoft /Library/Fonts/
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.