Применить команду в терминале ко всем возможным комбинациям файлов в каталоге
Есть быстрый вопрос:
Я хочу использовать один / любой из следующих сценариев, чтобы определить общие линии для всех комбинаций различных файлов в каталоге (каталог имеет 25 файлов).
$ perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
или же
$ comm file1 file2
Однако я хочу использовать эту команду для всех возможных би-комбинаций файлов (в моем случае это будет 300 уникальных комбинаций файлов).
Есть ли способ изменить этот сценарий командной строки для учета всех возможных комбинаций одновременно?
Заранее благодарю за любую помощь.
1 ответ
Решение
Существует модуль CPAN, который может эффективно генерировать комбинации: Algorithm:: Combinatorics
use strict;
use warnings;
use Algorithm::Combinatorics qw(combinations);
my @files = `ls <DIRECTORY>`;
my $iterator = combinations(\@files, 2);
while ( my $comb = $iterator->next ) {
my ($file1, $file2) = @$comb;
// call comparison script here
}
Вероятно, есть лучший способ решить эту проблему, чем то, что вы пытаетесь сделать, но это решает вашу проблему в соответствии с просьбой.