В конце концов, вещи хорошо работали. Был a exit
в моем сценарии, который включил бы особое условие (другое выполнение программы) при начальной загрузке и не "долго" после.
Вот немного короче Версия, которая использует находку:
Найти
в зависимости от сложности структуры каталога это может или не может быть более эффективным.
Для такого рода задача мне нравится разбиться Perl. Есть модуль, называемый файл :: Найти
, который является ядром, то это довольно хорошо для этого:
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
my %found;
sub collate_users {
next if -d;
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev,
$size, $atime, $mtime, $ctime, $blksize, $blocks
) = stat;
if ( not $found{$uid} ) {
print "$uid : ", getpwuid($uid),"\n";
}
$found{$uid}++;
}
find( \&collate_users, "/path/to/search", "/another/path/to/search" );
Это будет печать в «найденном порядке» - вы можете, если вы предпочитаете, сортировать и сортировать (по счету файлов, если вы настолько склонны) позже:
foreach my $uid ( sort { $found{$a} <=> $found{$b} } keys %found ) {
print getpwbyuid($uid)," ($uid) has $found{$uid} files\n";
}