Saya telah menemukan du --inodes
berguna, tapi saya tidak yakin versi du
yang mana itu membutuhkan. Di Ubuntu 17.10, berikut ini berfungsi:
du --inodes # all files and subdirectories
du --inodes -s # summary
du --inodes -d 2 # depth 2 at most
Gabungkan dengan | sort -nr
untuk mengurutkan turun berdasarkan jumlah inode yang berisi.
Cara termudah sepertinya adalah find /path/to/search -ls | wc -l
Temukan digunakan untuk menelusuri semua file dan folder.
-ls
untuk mendaftar (mencetak) semua nama. Ini adalah default dan jika Anda meninggalkannya, itu akan tetap berfungsi hampir di semua sistem. (Hampir, karena beberapa mungkin memiliki default yang berbeda). Merupakan 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. -l
opsi memberitahunya untuk menghitung jumlah baris.
Anda dapat menggunakannya dalam beberapa cara, mis.
- file uji wc
- berkas uji kucing | wc
Opsi pertama memungkinkan wc membuka file dan menghitung jumlah baris, kata, dan karakter dalam file itu. Opsi kedua melakukan hal yang sama tetapi tanpa nama file dibaca dari stdin.
Anda dapat menggabungkan perintah dengan pipa |
. Keluaran dari perintah pertama akan disalurkan ke masukan dari perintah kedua. Jadi find /path/to/search -ls | wc -l
menggunakan find untuk mendaftar semua file dan direktori dan memasukkan output ke wc. Wc kemudian menghitung jumlah baris.
(Alternatif lain adalah `ls | wc', tetapi find jauh lebih fleksibel dan merupakan alat yang bagus untuk dipelajari.)
[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 /, kecuali beberapa yang tidak ingin Anda cari. Kita dapat memicu perintah sebelumnya pada masing-masingnya, menghasilkan jumlah file per folder di /.
Namun:
- Ini menggunakan ekstensi khusus GNU -maxdepth.
Ini akan berfungsi di Linux, tetapi tidak di sembarang unix-a-like. - Saya curiga Anda mungkin benar-benar menginginkan sejumlah file untuk setiap subdirektori.
Skrip PHP berikut melakukan triknya.
#!/usr/bin/php
<?php
function do_scan($dir, $dev) {
$total = 1;
if (\filetype($dir) === 'dir' && \lstat($dir)['dev'] == $dev) {
foreach (\scandir($dir) as $file) {
if ($file !== '.' && $file !== '..') {
$total += do_scan($dir . \DIRECTORY_SEPARATOR . $file, $dev);
}
}
print "$total\t$dir\n";
}
return $total;
};
foreach (\array_slice($argv, 1) as $arg) {
do_scan($arg, \lstat($arg)['dev']);
}
Masukkan itu ke dalam file (katakanlah, "treesize
"), chmod +x
dan jalankan dengan ./treesize . | sort -rn | less
.