Saya mencoba untuk membersihkan hard drive yang memiliki semua jenis sampah yang terakumulasi selama bertahun-tahun. du
telah membantu mengurangi penggunaan disk, tetapi semuanya masih secara tidak sengaja bukan karena ukuran total, tetapi karena banyaknya file dan direktori secara total.
Apakah ada cara saya bisa melakukan sesuatu seperti du
tetapi tidak menghitung ukuran file, melainkan jumlah file dan direktori? Sebagai contoh: file adalah 1, dan direktori adalah jumlah file / direktori rekursif di dalamnya +1.
Sunting: Saya seharusnya lebih jelas. Saya ingin tidak hanya mengetahui jumlah total file / direktori /
, tetapi juga di /home
, /usr
dll, dan di subdirektori mereka, secara rekursif, seperti du
halnya untuk ukuran.
Jawaban:
Saya merasa
du --inodes
bermanfaat, tetapi saya tidak yakin versi mana yangdu
dibutuhkan. Di Ubuntu 17.10, yang berikut ini berfungsi:Gabungkan dengan
| sort -nr
untuk mengurutkan menurun berdasarkan jumlah inode yang mengandung.sumber
Sepertinya cara termudah
find /path/to/search -ls | wc -l
Temukan digunakan untuk berjalan melalui semua file dan folder.
-ls
untuk daftar (cetak) semua nama. Ini adalah default dan jika Anda membiarkannya, itu akan tetap berfungsi hampir semua sistem. (Hampir, karena beberapa mungkin memiliki default yang berbeda). Ini adalah kebiasaan yang baik untuk menggunakan ini secara eksplisit.Jika Anda hanya menggunakan
find /path/to/search -ls
bagian itu akan mencetak semua file dan direktori ke layar Anda.wc
adalah jumlah kata. yang-l
pilihan mengatakan itu untuk menghitung jumlah baris.Anda dapat menggunakannya dalam beberapa cara, misalnya
Opsi pertama memungkinkan kita membuka file dan menghitung jumlah baris, kata, dan karakter dalam file itu. Opsi kedua melakukan hal yang sama tetapi tanpa nama file itu dibaca dari stdin.
Anda dapat menggabungkan perintah dengan pipa
|
. Output dari perintah pertama akan disalurkan ke input dari perintah kedua. Dengan demikianfind /path/to/search -ls | wc -l
gunakan find untuk membuat daftar semua file dan direktori dan mengumpankan hasilnya ke wc. Wc kemudian menghitung jumlah garis.(Alternatif lain adalah `ls | wc ', tetapi menemukan jauh lebih fleksibel dan alat yang baik untuk belajar.)
[Edit setelah komentar]
Mungkin berguna untuk menggabungkan find dan exec.
Misalnya
find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
akan mencantumkan semua direktori di /, batalkan sebagian yang tidak ingin Anda cari. Kami dapat memicu perintah sebelumnya pada masing-masing, menghasilkan sejumlah file per folder di /.Namun:
Ini akan bekerja di Linux, tetapi tidak pada sembarang unix-a-sama.
sumber
Script PHP berikut ini membantu.
Masukkan itu dalam file (katakanlah, "
treesize
"),chmod +x
dan jalankan dengan./treesize . | sort -rn | less
.sumber
du
yang hanya menghitung bukan menjumlahkan ukuran, yang persis apa yang ditanyakan pertanyaan aslinya.ncdu bagus untuk ini!
Dari halaman manual, Anda dapat menampilkan jumlah per direktori dan memesan berdasarkan jumlah juga:
Sebagai contoh:
sumber
Memanfaatkan fakta bahwa dir dan file dipisahkan oleh
/
. Script ini memang memenuhi kriteria Anda, tetapi berfungsi untuk menginspirasi solusi lengkap. Anda juga harus mempertimbangkan mengindeks file Anda dengan loc.>
>
sumber
Inilah solusi yang menggunakan bash, terinspirasi oleh posting dari Unix & Linux .
Jika ada beberapa folder yang Anda tidak ingin melihat detailnya, seperti
.git
, Anda dapat mengecualikannya dari daftargrep
.sumber