com zsh
:
setopt extendedglob
typeset -A a
for f (./*) {
[[ $f = (#b)*_(*)_* ]] &&
a[$match]+=$f$'perl -e 'for (@ARGV) {push @{$a{$1}}, $_ if (/_(.*)_/s)}
system "echo", "zip", "./$_.zip", @{$a{$_}} for (keys %a)' ./*_*_*
'
}
for z (${(k)a}) {
echo zip ./$z.zip ${(ps:setopt extendedglob
typeset -A a
for f (./*) {
[[ $f = (#b)*_(*)_* ]] &&
a[$match]+=$f$'perl -e 'for (@ARGV) {push @{$a{$1}}, $_ if (/_(.*)_/s)}
system "echo", "zip", "./$_.zip", @{$a{$_}} for (keys %a)' ./*_*_*
'
}
for z (${(k)a}) {
echo zip ./$z.zip ${(ps:%pre%:)a[$z]}
}
:)a[$z]}
}
(remova o echo
para realmente fazê-lo quando satisfeito).
Usando perl
(de zsh
/ bash
ou qualquer outro shell não-csh):
(mais uma vez, remova o "echo",
para realmente fazer isso).