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