msoliver
(usa Debian)
Enviado em 19/10/2018 - 23:49h
Mauriciodez escreveu:
msoliver escreveu:
Esse script que gera os nomes, pode ser substituídos por:
echo {A-,B-,C-}{Mario,Marcos,Carlos}{-1,-2}|sed 's/ /\n/g'
Ow véi ... eu fiquei umas 3 horas pra tentar construir algo com aquele monte de for e vc vem e destrói meus sonhos com uma simples linha ???
kkkkkkkkkkkkkkkkkkkkkkk ... a nemmmmmmmmmmmmmmmmmm
msoliver escreveu:
Qual a relação do nome antigo com o NOVO NOME
Os arquivos que serão renomeados estão todos na mesma pasta?
São arquivos de imagem, no caso .png, então cada "imagem" inicial vai gerar X cópias dela mesma, onde os nomes serão compostos por "SUFIXO + NOME-ORIGINAL + PREFIXO".png
os arquivos originais estão no mesmo diretório !!!
------------------------------------------| Linux User #621728 |-----------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------| Linux User #621728 |-----------------------------------------
echo {A-,B-,C-}{Mario,Marcos,Carlos}{-1,-2}|sed 's/ /\n/g'
O sed é só para deixar cada um numa linha....
Logo, o comando é menor . . . rsrsrsr
Vamos lá, vamos ver se entendi...
Busco os arquivos 'png' no diretório.
para cada arquivo será gerado uma relação de nomes, seguindo a regra,
"SUFIXO +
NOME-ORIGINAL + PREFIXO".png
Ai copio e renomeio cada arquivo para X nomes, é isso?
No comando abaixo, pego o nome do arquivo, tiro a extensão e são geranos os novo nome.
Veja se é isso.
for arq in $(ls -1 *.png);do
NomeOld=$(sed 's/\..*//' <<< "$arq");
Nome_Novo=($(echo {A-,B-,C-}$NomeOld{-1,-2}.png))
echo -e "NOME:${arq} \t SEM EXT:${NomeOld}\nNome_Novo\n${Nome_Novo[@]}";
[b]#Falta Testar: Copia o arquivo e renomeia com cada nome do Array (Nome_Novo)
# for ((n=0;n<${#Nomes_Novos[@]};n++));do
# cp arq Diretorio_destino/${Nomes_Novos[$n]}
# done
done
##EDITADO##
Testado!!!
destino="Documentos/"
for arq in $(ls -1 *.png);do
NomeOld=$(sed 's/\..*//' <<< "$arq");
Nomes_Novos=($(echo {A-,B-,C-}$NomeOld{-1,-2}.png));
for ((n=0;n<${#Nomes_Novos[@]};n++));do
cp ${arq} ${destino}${Nomes_Novos[$n]};
done;
done
marcelo oliver