Renomear em massa (complicado) [RESOLVIDO]

1. Renomear em massa (complicado) [RESOLVIDO]

Bernardo
bernardolb

(usa Debian)

Enviado em 17/02/2011 - 10:32h

Preciso renomear arquivos em massa. São imagens em .jpg
Os nomes de arquivos não possuem nenhum padrão. Por exemplo um arquivo chamado a.jpg
e existe outro chamado 2342dfsjks-7456sd3424dcggfd.jpg (note o - existem outros caracteres especiais)

Essa falta de padronização dificulta um pouco o uso de expressões regulares. Posso renomear para qualquer nome, o ideal seria renomear numa sequência. Por exemplo 1.jpg 2.jpg etc...

Alguem tem alguma ideia?


  


2. MELHOR RESPOSTA

Joao
stack_of

(usa Slackware)

Enviado em 17/02/2011 - 11:13h

Coloque os arquivos a renomear em um diretório e execute o script abaixo em outro diretório:

#!/bin/bash

cd /diretorio/dos/arquivos
i=1
x=`echo *`
for n in $x
do
mv $n $i.jpg

i=$(($i+1))
echo $i
done




3. olá

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/02/2011 - 11:02h

Olá amigo,

Tente usar essa dica: http://www.dicas-l.com.br/arquivo/renomeando_varios_arquivos_simultaneamente.php

Além de renomear vários arquivos de uma vez vc ainda vai poder escolher um nome radical(nome inicial) padrao.


Abraços


4. Re: Renomear em massa (complicado) [RESOLVIDO]

Osiel
mrtuxys

(usa Outra)

Enviado em 17/02/2011 - 11:28h

Um script para renomear arquivos vai ser muito útil para mim. Fui renomear umas legendas aqui, mas deu erro.
Acredito que seja porque nos respectivos nomes tenha espaço. Está correto?
Tem como editar esse script para ele ignorar espaços?
Valeu


5. Re: Renomear em massa (complicado) [RESOLVIDO]

Osiel
mrtuxys

(usa Outra)

Enviado em 17/02/2011 - 11:41h

Achei esse script do Fabio que apaga espaços em branco.



#!/bin/bash
# ##########################################
# Author: Fábio Berbert de Paula
# fabio@vivaolinux.com.br
#
# Favor me mandar as fotos de sua irmã e/ou
# prima (peladas?)
# ##########################################

if [ "$#" != 2 ]
then
echo ""
echo "Use: $0 <dir> <extensao>"
echo "Exemplo: $0 /musicas mp3"
echo ""
exit
fi

DIR="$1"
EXT="$2"
echo ""
echo "-------------------------------------------------"
echo "Renomeando arquivos do diretório $DIR ..."
echo ""
CONT="0"
ls *.${EXT} | while read ARQ
do
NOVO=`echo $ARQ | tr ' ' '-'`
if [ "$NOVO" != "$ARQ" ]
then
echo "$ARQ -> $NOVO"
mv "$ARQ" "$NOVO"
CONT=`expr $CONT + 1`
fi
done

echo ""
echo " Trabalho feito! $CONT arquivo(s) renomeado(s)."
echo "-------------------------------------------------"


6. Re: Renomear em massa (complicado) [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 17/02/2011 - 11:53h

Não tenho muito conhecimento de scrit bash, fiz um pequeno script para solucionar um problema em particular e não para propósito geral.
Talvez usando trim().


7. melhorando um pouco o script

Osiel
mrtuxys

(usa Outra)

Enviado em 17/02/2011 - 12:00h

Fiz uma pequena alteração no seu script (eu também não tenho muito conhecimento)
Da maneira que você fez toda vez o usuário teria que editar o caminho dos arquivos e a extensão. (Tudo bem, eu sei, problema em particular, mas como eu vou usar para propósito geral)
Da maneira que eu fiz ele pergunta pelos dois e faz as alterações necessárias.


#!/bin/bash


echo "Digite o diretório do arquivos"
read diretorio
echo "digite a extensão do arquivo"
read extensao
cd $diretorio
i=1
x=`echo *`
for n in $x
do
mv $n $i.$extensao

i=$(($i+1))
echo $i
done


Valeu pela base do script








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts