Следующий конвейер печатает каждую отличную строку во входе, которому предшествует его повторный счет, отсортированный путем уменьшения повторного счета:
sort | uniq -c | sort -rn
Таким образом:
find . -type f -name '?*.*' | sed 's/.*\.//' | sort | uniq -c | sort -rn
Если Вам нравится Perl, то этот пример кода, найденный в CPAN, мог добиться цели. Это также имеет низкие зависимости. Библиотекой, в которой Вы нуждаетесь, является Устройство-Cdio.
use strict;
BEGIN {
chdir 'example' if -d 'example';
use lib '../lib';
eval "use blib"; # if we fail keep going - maybe we have installed Cdio
}
use Device::Cdio;
use Device::Cdio::Device;
use Device::Cdio::Track;
use vars qw($0 $program $pause %opts);
sub print_drive_class($$$) {
my ($msg, $bitmask, $any) = @_;
my @cd_drives = Device::Cdio::get_devices_with_cap($bitmask, $any);
print "$msg...\n";
foreach my $drive (@cd_drives) {
print "Drive $drive\n";
}
print "-----\n";
}
my @cd_drives = Device::Cdio::get_devices($perlcdio::DRIVER_DEVICE);
foreach my $drive (@cd_drives) {
print "Drive $drive\n";
}
print "-----\n";
print_drive_class("All CD-ROM drives (again)", $perlcdio::FS_MATCH_ALL, 0);
dmesg | awk '/CD-ROM/ && /Attached/{print "/dev/"$NF}'
– Rahul Patil 25.02.2013, 11:22