Применить команду в терминале ко всем возможным комбинациям файлов в каталоге

Есть быстрый вопрос:

Я хочу использовать один / любой из следующих сценариев, чтобы определить общие линии для всех комбинаций различных файлов в каталоге (каталог имеет 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
}  

Вероятно, есть лучший способ решить эту проблему, чем то, что вы пытаетесь сделать, но это решает вашу проблему в соответствии с просьбой.

Другие вопросы по тегам