Renomear arquivos com tag associada

1. Renomear arquivos com tag associada

Ede
ede_linux

(usa Ubuntu)

Enviado em 01/09/2017 - 10:31h

Boas pessoal,

Preciso de renomear uma série de arquivos em um directório. Devem ser renomeados respeitando o seu tipo de arquivo e recebendo uma determinada tag com respectiva numeração.
Vamos imaginar que tenho estes arquivos:

adfbkbsdfdsf.jpg
asdadadfdfdf.png
asdasdafdfd.pdf
asdasdadsfdsfd.jpg
asdasdsfdsfsdf.exe


Pretendo que os mesmos assumam este novos nomes:

file_1.jpg
file_2.png
file_3.pdf
file_4.jpg
file_5.exe


Reparem que a extensão do ficheiro foi mantida e o nome do ficheiro foi alterado para uma tag com respectiva numeração.
Neste momento tenho este script:

name_image="file_"

array=($(ls !(*.sh) ))
for (( i=0; i<${#array[@]}; i++ ));
do
echo ${array[$i]}
echo $name_image$i.${array#*.}

done


Acontece que o comando ls !(*.sh) estoira na leitura do mesmo no for e a extensão do arquivo não é respeitada. Ele assume, para todos os arquivos, a última extensão lida!
Alguma sugestão de como resolver o assunto?

Obrigado





  


2. Re: Renomear arquivos com tag associada

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/09/2017 - 23:37h

ede_linux escreveu:

Boas pessoal,

Preciso de renomear uma série de arquivos em um directório. Devem ser renomeados respeitando o seu tipo de arquivo e recebendo uma determinada tag com respectiva numeração.
Vamos imaginar que tenho estes arquivos:

adfbkbsdfdsf.jpg
asdadadfdfdf.png
asdasdafdfd.pdf
asdasdadsfdsfd.jpg
asdasdsfdsfsdf.exe


Pretendo que os mesmos assumam este novos nomes:

file_1.jpg
file_2.png
file_3.pdf
file_4.jpg
file_5.exe


Reparem que a extensão do ficheiro foi mantida e o nome do ficheiro foi alterado para uma tag com respectiva numeração.
Neste momento tenho este script:

name_image="file_"

array=($(ls !(*.sh) ))
for (( i=0; i<${#array[@]}; i++ ));
do
echo ${array[$i]}
echo $name_image$i.${array#*.}

done


Acontece que o comando ls !(*.sh) estoira na leitura do mesmo no for e a extensão do arquivo não é respeitada. Ele assume, para todos os arquivos, a última extensão lida!
Alguma sugestão de como resolver o assunto?

Obrigado

Boa noite Ede.
Segue minha humilde contribuição/sugestão:
RENOMEANDO:

X=0;for arq in $(ls -1|grep -Ev 'sh$' );do
let X++;ext=$(cut -d"." -f2 <<< "$arq")
nome=$(cut -d"." -f1 <<< "$arq")
rename -n 's/'${nome}'\.'$ext'/file_'${X}'\.'$ext'/' *.*
done

OBS.: Execute no mesmo diretório onde estão os arquivos que devem ser renomeados.
"rename -n", faz uma "SIMULAÇãO", para RENOMEAR exclua o '-n'.

É sempre bom lembrar:
Obs: se a resposta foi satisfatória, marque o tópico como resolvido e escolha a MELHOR RESPOSTA!

Marcelo Oliver


3. Re: Renomear arquivos com tag associada

Ede
ede_linux

(usa Ubuntu)

Enviado em 01/09/2017 - 23:52h

MSoliver muito obrigado
Ainda não testei o script, pois gosto de estudar antes de executar. Não pretendo ser um script kid :)
Neste momento apenas tenho uma coisa para lhe dizer "você acabou de me dar um grande chapada na cara! Que coisas estranhas são essas!? :)" hehe
Obrigado por contribuir possitivamente para a minha aprendizagem

Em breve post resultado (também em outro script que me ajudou, ainda estou a estudar) :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts