Ir para o conteúdo

Renomear Arquivos De Diretórios Ordenadamente


Criado por Beraldo, Out 14 2010 20:49

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Beraldo

Beraldo
  • Beraldo
  • Colaborador
  • 2 Revisões
  • LocalizaçãoCuritiba - PR

Revisou 14 outubro 2010 - 20:49

Precise renomear arquivos de forma a deixá-los como 0001.ext 0002.ext ...

Aí fiz este script simples e resolvi compartilhá-lo com vocês :D

O script atua recursivamente


#!/bin/bash
#
# Este script renomeia, recursivamente, todos os arquivos de um diretório
# para 0001.ext, 0002.ext ..., onde "ext" é a extensão do arquivo original
#
# Exemplo de uso:
# ./script [diretorio_base]
#
# Se não for passado nenhum parâmetro, o diretório corrente é usado como base



# Função recursiva que renomeia os arquivos
# @param dir Diretório base para renomeação
rename()
{
	# variável obrigatoriamente local, que armazena o contador usado para nomear arquivos
	local cont=1
	
	ls "$1" |	
	while read i
	do
		# se o arquivo atual da iteração for um diretório, chama a função novamente
		if [ -d "$1/$i" ]
		then
			rename "$1/$i"
		else
			# preenche com zeros o nome do arquivo (transforma 1 em 0001)
			num=$(printf %04d $cont)
			
			# renomeia o arquivo
			mv "$1/$i" "$1/"$num"."${i#*.}
			
			# incrementa o contador local
			((cont++))
		fi
	done
}

# Verifica se foi passado parâmetro
if [ $# -eq 1 ]
then
	# remove a última barra, de houver
	DIR=$(echo "$1" | sed -r 's/\/*$//' )
else
	DIR=.
fi


# chama a função passando o diretório base como parâmetro
rename "$1"

Roberto Beraldo Chaiben
Registered Linux User #486556




1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)