tente
for file in *"$foobar"*
do
dest="$(echo $file| sed -e 's/\(.*\)\.[^\.]*$/.csv/' )"
if test -f "$file"
then
/home/user/scriptModelise.pl "$file" >> /home/user/Documents/collectCSV/$dest
else
echo "no $foobar file"
fi
done
onde
-
\(.*\)\.[^\.]*$captura um padrão com qualquer caractere, (fim do padrão) seguido por um ponto, sem ponto até o final da linha -
.csvinsere o padrão encontrado, adicione .csv -
*"$foobar"*expandirá para litteral*foobar*(com valor apropriado) se nenhum arquivo correspondente for encontrado. daí a necessidade detest -f "$file"
Editar:
-
\(.*\)\.[^\.]*$(lado esquerdo: encontrando padrão (s))
dividida em (_ espaço reservado)
-
__.*__________um padrão com qualquer caractere (o ponto tem um significado especial: qualquer caractere) -
__.*__\._______um padrão com qualquer caractere, seguido por um ponto (o ponto de escape é um ponto simples) -
__.*__\.[^\.]*$padrão com qualquer caractere, (fim do padrão) seguido por um ponto, sem ponto ([^\.]*) até o final da linha (o sinal de dólar é especial para o final da linha) -
\(__\)__________captura a primeira parte do padrão. -
.csv(lado direito, o que fazer) -
____corresponde ao que ficou dentro do primeiro\( \),para o segundo e assim por diante, use¶ todo o padrão.