Mengapa ini tidak menunjukkan file / folder tersembunyi?


140

Saya sedang mencari-cari di dalam sistem saya du -sch ./*untuk menemukan file-file besar yang tidak berguna yang mungkin saya timbun tanpa alasan, ketika saya menemukan ini:

$ du -sch ./*
du: cannot read directory ‘./drbunsen/.gvfs’: Permission denied
du: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied
18G ./drbunsen
18G total

$ cd drbunsen/
$ du -sch ./*
601M ./Desktop
20K ./Documents
598M ./Downloads
4.0K ./flash
4.0K ./Music
8.0M ./Pictures
4.0K ./Public
4.0K ./Templates
4.0K ./Ubuntu One
8.0K ./Videos
11G ./VirtualBox VMs
6.9M ./workspace
12G total

Bagaimana cara membuat file tersembunyi terlihat? du -sch ./.*memberikan hasil yang sama dengan du -sch ./*.


du -hs .[^.]* *untuk semua file yang tersembunyi, tidak termasuk . dan ..jawaban lain yang sepertinya tidak ada.
laggingreflex

Jawaban:


245

Menggunakan

du -sch .[!.]* * |sort -h

di folder rumah Anda.

Atau, perintah yang paling sering saya gunakan adalah

ncdu

Mudah dipasang jika diperlukan:

sudo apt-get install ncdu

1
Terima kasih, kamu jenius. Saya bukan ahli dalam bash, apa yang dilakukan [!.] Lakukan?
Dr_Bunsen

10
@Dr_Bunsen: Ini adalah glob yang mencantumkan semua file yang dimulai dengan satu .. Ini trik yang rapi: jika Anda tidak tahu apa yang tampak seperti bola mata global, coba jalankan echo .[!.]*atau apa pun. Shell kemudian akan memperluas gumpalan dan menyebarkannya echo, mencetak daftar file yang dihasilkan.
Tikhon Jelvis

14
Itu gagal mendaftar file bernama seperti ..foodan dapat menyebabkan masalah dengan file yang namanya dimulai -. Bisa juga gagal jika daftar arg terlalu panjang. du -ahd1tidak akan memiliki masalah itu.
Stéphane Chazelas

Tidak relevan dengan pertanyaan awal, namun relevan untuk penggunaan sehari-hari: Ini mungkin berguna untuk memasukkan 'c' saklar untuk menampilkan total dan untuk menyusun ulang pilihan sedikit untuk membuat perintah ini sedikit lebih mudah untuk diingat: du -cksh .[!.]* * |sort -h.
Daddy32

56

Saya memiliki pertanyaan yang sama di milis coreutils, karena sulit bagi saya untuk mengingat perintah aneh ini oleh @ don.joey. Dan Bob Proulx mengusulkan perintah yang lebih baik dan lebih alami: du -ahd1 | sort -h

Jika Anda ingin membuat daftar semua file di direktori saat ini maka gunakan '.' atau jangan berikan argumen file sama sekali. Anda juga mungkin ingin menggunakan opsi -d, --max-depth = N.

Coba ini:

du -hd1


7
Tambahkan -aopsi untuk menjadi setara.
Stéphane Chazelas

6
Ini harus menjadi jawaban yang diterima karena lebih sederhana dan lebih mudah diingat dan dipahami.
Bastien

8

Saat Anda menjalankan perintah yang sama di dalam direktori, itu tidak termasuk file tersembunyi yang dimulai dengan .dalam hitungan. Jika Anda memiliki Steam misalnya diinstal, itu default untuk menginstal permainan di bawah ~/.local/share/Steam/dan itu sendiri diinstal di sana juga.

Di bawah bash, Anda tampaknya harus menjalankannya du -sch .[!.]* *karena itu tidak memperluas .*glob. Di bawah zshatau shell lain, du -sch * .*harus berfungsi, seperti yang .*seharusnya diperluas untuk memasukkan daftar semua file yang tersembunyi di direktori saat ini.


BAIK. Tampaknya ada masalah dengan bash, karena tampaknya tidak berkembang dengan baik .*. Tetapi du -sch * .*apakah melakukan hal yang benar di bawah zsh. Di bawah bash, du -sch .*tampaknya menghitung .tetapi tidak berkembang untuk menampilkan file satu per satu.
dobey

Bagi saya. * Juga mengembang ke ../* dan karena itu du keluar dari direktori yang ingin saya lihat ukurannya! Saya harus menggunakan ./.[^.)* sebagai gantinya.
Ari

Zsh dan semua cangkang berasal dari cangkang Forsyth (saat ini kebanyakan hanya pdksh dan turunannya) yang melakukan hal yang benar dan tidak berkembang. dan di sini. Semua shell seperti Bourne lainnya lakukan (bash, Bourne, AT&T ksh, dash, yash ...). Di zsh, Anda akan menggunakan du -sch -- *(D), bukan du -sch -- * .*.
Stéphane Chazelas
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.