Renomear dois tipos de arquivos segundo padrão numérico sequencial

1. Renomear dois tipos de arquivos segundo padrão numérico sequencial

Armando Sartori
ASartori

(usa openSUSE)

Enviado em 27/06/2016 - 12:20h

Olá,
numa pasta, tenho arquivos nomeados em duas sequências:
A1.jpg, A2.jpg, A3.jpg... e B1.jpg, B2.jpg, B3.jpg....
São cerca de 500 arquivos nomeados nesses formatos, metade na sequência A e metade na sequência B.
Preciso renomeá-los de forma que A1.jpg se transformre em 002.jpg, A2.jpg, em 004.jpg, A3.jpg, em 006.jpg e assim por diante. Da mesma forma, B1.jpg deve ser renomeado para 003.jpg, B2.jpg, para 005.jpg, B3.jpg, para 007.jpg etc.
Ao final teria a sequência 002.jpg, 003.jpg, 004.jpg, 005.jpg, 006.jpg, 007.jpg...
É possível fazer isso por meio de um script? Desde já advirto que tenho pouca experiência no assunto.
Grato



  


2. Re: Renomear dois tipos de arquivos segundo padrão numérico sequencial

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/06/2016 - 17:48h

ASartori escreveu:

Olá,
numa pasta, tenho arquivos nomeados em duas sequências:
A1.jpg, A2.jpg, A3.jpg... e B1.jpg, B2.jpg, B3.jpg....
São cerca de 500 arquivos nomeados nesses formatos, metade na sequência A e metade na sequência B.
Preciso renomeá-los de forma que A1.jpg se transforme em 002.jpg, A2.jpg, em 004.jpg, A3.jpg, em 006.jpg e assim por diante.
Da mesma forma, B1.jpg deve ser renomeado para 003.jpg, B2.jpg, para 005.jpg, B3.jpg, para 007.jpg etc.
Ao final teria a sequência 002.jpg, 003.jpg, 004.jpg, 005.jpg, 006.jpg, 007.jpg...
É possível fazer isso por meio de um script? Desde já advirto que tenho pouca experiência no assunto.
Grato

Boa tarde ASartori.
É isso que vc postou mesmo, com relação aos "B"?
001.jpg não vai existir...?

No aguardo,
Marcelo Oliver



3. Re: Renomear dois tipos de arquivos segundo padrão numérico sequencial

Armando Sartori
ASartori

(usa openSUSE)

Enviado em 29/06/2016 - 19:59h

Marcelo,
Obrigado pela atenção e desculpe-me pela demora em responder. Trata-se do seguinte: gostaria de renomear os arquivos numerando-os e, ao fazer isso, ter a possibilidade de iniciar a numeração a partir de um dado ponto, não necessariamente 000 ou 001, mas, por exemplo, 064 ou 065. E também poder utilizar não uma sequência incrementada por +1, mas por +2. No meu caso específico, as séries A e B correspondem a arquivos a serem numerados, respectivamente, com números pares e ímpares
msoliver escreveu:

ASartori escreveu:

Olá,
numa pasta, tenho arquivos nomeados em duas sequências:
A1.jpg, A2.jpg, A3.jpg... e B1.jpg, B2.jpg, B3.jpg....
São cerca de 500 arquivos nomeados nesses formatos, metade na sequência A e metade na sequência B.
Preciso renomeá-los de forma que A1.jpg se transforme em 002.jpg, A2.jpg, em 004.jpg, A3.jpg, em 006.jpg e assim por diante.
Da mesma forma, B1.jpg deve ser renomeado para 003.jpg, B2.jpg, para 005.jpg, B3.jpg, para 007.jpg etc.
Ao final teria a sequência 002.jpg, 003.jpg, 004.jpg, 005.jpg, 006.jpg, 007.jpg...
É possível fazer isso por meio de um script? Desde já advirto que tenho pouca experiência no assunto.
Grato

Boa tarde ASartori.
É isso que vc postou mesmo, com relação aos "B"?
001.jpg não vai existir...?

No aguardo,
Marcelo Oliver





4. Re: Renomear dois tipos de arquivos segundo padrão numérico sequencial

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/06/2016 - 00:25h

ASartori escreveu:
Marcelo,
Obrigado pela atenção e desculpe-me pela demora em responder.
Trata-se do seguinte:
Gostaria de renomear os arquivos numerando-os e, ao fazer isso, ter a possibilidade de iniciar a numeração a partir de um dado ponto, não necessariamente 000 ou 001, mas, por exemplo, 064 ou 065.
E também poder utilizar não uma sequência incrementada por +1, mas por +2.
No meu caso específico, as séries A e B correspondem a arquivos a serem numerados, respectivamente, com números pares e ímpares
Grato


Boa noite ASartori.
Quanto ao "A par", "B impar", tinha entendido ... :)
A duvida era mesmo quanto ao número inicial . . .
Segue o script, testado e funcionando . . . :

#!/bin/bash
DIRC="$PWD" export DIRC
ARQ01=$DIRC/ARQAB.temp
ARQ02=$DIRC/ARQNV.temp
CNT="0"

echo -en "\n DEFINA O NúMERO INICIAL da RENOMEAÇãO"
read -p " :" NINIC
ls -1 *.jpg > $ARQ01
NREG=$(awk 'END{print NR}' $ARQ01)

while IFS=$'\n' read -r LINE;do
let CNT++
LT=$(egrep -o '[AB]' <<< "$LINE")
N=$(egrep -o '[0-9]+' <<< "$LINE")

if (($N>=$NINIC));then
if [ $LT = "A" ];then
NM=$(printf "%03d.jpg" $((N*2)))
else
NM=$(printf "%03d.jpg" $(((N*2)+1)))
fi
mv $LINE $NM
echo " $LINE => $NM" | tee -a $ARQ02
fi
done < $ARQ01
(($CNT==$NREG)) && { sort -t" " -k3 $ARQ02 > LOG.txt; rm $ARQ02 ; }

OUTRA OPÇãO:

#!/bin/bash
DIRC="$PWD" export DIRC
ARQ01=$DIRC/ARQAB.temp
ARQ02=$DIRC/LOG.txt
INICIO() {
tput clear ; > $ARQ01 ; > $ARQ02
echo -e "\n NúMERO FINAL Da LISTAGEM, Ex: \"B50.jpg\", É \"50\""
read -p " FINAL: " NFIN
NFIN=$(((NFIN*2)+1))
#SIMULA "ls -1" ORDENADO
for ((x=2;x<=NFIN;x++))do y=$((x/2));(((x%2)==1)) && PI="B" || PI="A"; echo "$PI""$y".jpg >> $ARQ01;done
echo -e "\n NúMERO INICIAL da RENOMEAÇãO"
read -p " INíCIO: " NINIC ; echo
CNT=$(egrep -n -m1 "^.$NINIC" $ARQ01 |cut -d: -f1)
NR=$(awk 'END{print NR}' $ARQ01)
RENOMEIA
}

RENOMEIA() {
LINE=$(sed -n "$CNT"p $ARQ01)
LT=$(egrep -o '[AB]' <<< "$LINE")
N=$(egrep -o '[0-9]+' <<< "$LINE")
if [ $LT = "A" ];then
NM=$(printf "%03d.jpg" $((N*2)))
else
NM=$(printf "%03d.jpg" $(((N*2)+1)))
fi
#mv $LINE $NM
echo " $LINE => $NM" | tee -a $ARQ02
(($CNT<NR)) && { let CNT++ ; RENOMEIA ; }
}

INICIO

cat LOG.txt

A1.jpg => 002.jpg
B1.jpg => 003.jpg
A2.jpg => 004.jpg
B2.jpg => 005.jpg
A3.jpg => 006.jpg
B3.jpg => 007.jpg
A4.jpg => 008.jpg
B4.jpg => 009.jpg
. . .

E não esqueça . . . :)
---------------------------------------------------------------------------------
Se a resposta foi satisfatória e resolveu seu problema, marque-a como a MELHOR, dessa forma, ganho uns pontinhos,
o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)
---------------------------------------------------------------------------------

Abç.:
Marcelo Oliver









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts