Pular para o conteúdo

Renomear em massa (complicado) [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Renomear em massa (complicado) [RESOLVIDO]

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?

Responder tópico

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

Melhor resposta

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



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

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]

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]

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

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


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder