Voici un simple script Perl qui le fera:
#!/usr/bin/perl -w
use strict;
sub count_inodes($);
sub count_inodes($)
{
my $dir = shift;
if (opendir(my $dh, $dir)) {
my $count = 0;
while (defined(my $file = readdir($dh))) {
next if ($file eq '.' || $file eq '..');
$count++;
my $path = $dir . '/' . $file;
count_inodes($path) if (-d $path);
}
closedir($dh);
printf "%7d\t%s\n", $count, $dir;
} else {
warn "couldn't open $dir - $!\n";
}
}
push(@ARGV, '.') unless (@ARGV);
while (@ARGV) {
count_inodes(shift);
}
Si vous voulez que cela fonctionne comme du
(où chaque compte de répertoire inclut également le compte récursif du sous-répertoire), changez la fonction récursive en return $count
puis, au point de récursivité, dites:
$count += count_inodes($path) if (-d $path);