Copiar e renomear arquivos [RESOLVIDO]

1. Copiar e renomear arquivos [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 19/10/2018 - 13:44h

Pessoas ... tenho os arquivos "a.png"... "x.png" , preciso fazer cópias de cada um e renomear com nomes variados porém pre-definidos.

Exemplo dos nomes "a-1.png", "nome-a.png", "nome-a-1-png", "xuxu-nome-a.png" ... "x-1.png", "nome-x.png", "nome-x-1-png", "xuxu-nome-x.png".

tô quebrando a cabeça porém até agora só consegui implementar no script as cópias ( futebol ainda é bem fraco )





  


2. MELHOR RESPOSTA

Marcelo Oliver
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


3. Re: Copiar e renomear arquivos [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/10/2018 - 20:19h

Mauriciodez escreveu:

Pessoas ... tenho os arquivos "a.png"... "x.png" , preciso fazer cópias de cada um e renomear com nomes variados porém pre-definidos.

Exemplo dos nomes "a-1.png", "nome-a.png", "nome-a-1-png", "xuxu-nome-a.png" ... "x-1.png", "nome-x.png", "nome-x-1-png", "xuxu-nome-x.png".

tô quebrando a cabeça porém até agora só consegui implementar no script as cópias ( futebol ainda é bem fraco )

Mauricio, boa noite.
Esses nomes pre-definidos seguem algum padrão, alguma lógica.
Forneça mais informações que tento montar um script/comando.

marcelo oliver



4. Re: Copiar e renomear arquivos [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 19/10/2018 - 21:18h

msoliver escreveu:
Esses nomes pre-definidos seguem algum padrão, alguma lógica.


não tem padrão não nem lógica ... kkkkkkkkkk

são alguns arquivos que tenho que fazer copias e renomear com sufixos e prefixos pré-definidos

eu até consegui faz o script com array e 3 FOR aninhados .. mas não consegui implementar o comando para renomear, no caso só consegui gerar os nomes em arquivo.

É só o que expliquei no primeiro post mesmo !! se quiser te faço um algoritimo pra tentar te explicar melhor !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



5. Re: Copiar e renomear arquivos [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 19/10/2018 - 21:41h

A idéia é essa

#!/bin/bash
prefixo=("A-" "B-" "C-")
nome=("Mario" "Marcos" "Carlos")
sufixo=("-1" "-2")

for((i=0;i<${#prefixo[@]};i++));
do
for ((j=0;j<${#nome[@]};j++))
do
for ((k=0;k<${#sufixo[@]};k++))
do

d+=(${prefixo[i]}${nome[j]}${sufixo[k]});

done
done
done

for i in ${d[@]}
do
echo $i
done


Só que, a variável "nomes" é o nome dos arquivos sem a extensão e ao invés do "echo" seriam os arquivos renomeados !!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: Copiar e renomear arquivos [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/10/2018 - 22:33h

Mauriciodez escreveu:

A idéia é essa

#!/bin/bash
prefixo=("A-" "B-" "C-")
nome=("Mario" "Marcos" "Carlos")
sufixo=("-1" "-2")

for((i=0;i<${#prefixo[@]};i++));
do
for ((j=0;j<${#nome[@]};j++))
do
for ((k=0;k<${#sufixo[@]};k++))
do

d+=(${prefixo[i]}${nome[j]}${sufixo[k]});

done
done
done

for i in ${d[@]}
do
echo $i
done


Só que, a variável "nomes" é o nome dos arquivos sem a extensão e ao invés do "echo" seriam os arquivos renomeados !!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Esse script que gera os nomes, pode ser substituídos por:
echo {A-,B-,C-}{Mario,Marcos,Carlos}{-1,-2}|sed 's/ /\n/g' 

Qual a relação do nome antigo com o NOVO NOME
Os arquivos que serão renomeados estão todos na mesma pasta?
Detalhes....

mso



7. Re: Copiar e renomear arquivos [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 19/10/2018 - 22:45h

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 |-----------------------------------------



8. Re: Copiar e renomear arquivos [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/10/2018 - 01:08h

msoliver escreveu:
...
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


adaptei 2 caroços aqui e ficou 100% ... valew tio !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts