/ / dołącz pliki zależnie od nazw plików [closed] - perl, list, nazwy plików

dołącz pliki w zależności od nazw plików [closed] - perl, list, nazwy plików

Przykładowe nazwy plików:

example_12345_8943759847.csv
example_23456_9859877.csv
example_34567_92837458738.csv
example_12345_1165253.csv
example_23456_9983632652.csv
example_23456_2345.csv

Potrzebuję dołączyć pliki, które mają tę samą środkową liczbę, np. 23456.csv Chodzi o to, że nie znam tej średniej liczby, więc przypuszczam, że to musi być jakaś zmienna? Wyobrażam sobie, że musiałbym wyświetlić nazwy plików z tym samym numerem części środkowej, a następnie wypisać tę listę?

Mam do dyspozycji tylko Perl lub sed.

Dzięki

Odpowiedzi:

2 dla odpowiedzi № 1

Oto część zadania (w Perlu). Znajdowanie grup plików, które dzielą środkową część:

use strict;
use warnings;

my @files = qw/
example_12345_8943759847.csv
example_23456_9859877.csv
example_34567_92837458738.csv
example_12345_1165253.csv
example_23456_9983632652.csv
example_23456_2345.csv
/;

my %middles;

#This creates a hash. The keys are the middle number;
#the values are arrays of filenames that share that middle number.
foreach (@files)
{
push @{$middles{$1}},$_ if (/[a-z]+_(d+)_d+.csv/);
}

#Now process the results
foreach my $middle (keys %middles)
{
#Get a group of filenames sharing the same middle part.
my @files_to_join = @{$middles{$middle}};

#Join them here...
}

Reszta zależy od tego, co masz na myśli przez "dołączenie". Możesz znaleźć Text::CSV moduł pomocny przy przetwarzaniu plików CSV.