Le 3 avril 2023 Emanuel Berg a écrit : > Michel Verdier wrote: > >>> I'm still so impressed by this, I tried to run this but it >>> seems I lack the Slurp module? >> >> apt-get install libfile-slurp-perl > > Merci :) > > Indeed, works! > > Okay, forget about the function/script then, I have it and it > works :)
Here it is with some more tests. Easier to read but much less fun :) #!/usr/bin/perl -w use strict; # echo $PATH | tr ':' '\n' | perl -MFile::Slurp -ne 'chomp;@e=read_dir($_,prefix=>1); print map "$_\n",@e'|xargs file|perl -pe 's/\S+\s+//'|grep -v 'symbolic link'|perl -pe 's/, dynamically linked.+//'|sort|uniq -c|sort -rn my @folders = split(':',$ENV{PATH}); my %count; foreach my $folder (@folders) { chomp($folder); next if(-l $folder); print "$folder\n"; opendir(DIR,"$folder"); my @files = readdir(DIR); closedir DIR; foreach my $file (@files) { next if($file =~ /^\.\.?$/ or -l "$folder/$file"); chomp(my $type = `file -b $folder/$file`); next if($type =~ /symbolic link/); $type =~ s/,.+$//; $count{$type}++; } } foreach my $key (sort {$count{$b} <=> $count{$a}} keys %count) { printf("%5d %s\n", $count{$key}, $key); }