Tente algo como
ext=$( echo "$i.${f##*.}" | tr [A-Z] [a-z] ) mv -- "$f" $i$ext
ou para nomes de arquivos de tamanho fixo.
dest=$(printf '08d%' $9)$( echo "$i.${f##*.}" | tr [A-Z] [a-z] ) mv -- "$f" $dest
c
Estou tentando renomear um diretório cheio de imagens assim:
test.jpg
funny.gif
sad.png
filename.PNG
filenaaskjas.JPG
para:
1.jpg
2.gif
3.png
4.png
5.jpg
Eu tenho que trabalhar, exceto para as maiúsculas - > conversão em minúsculas:
i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
mv -- "$f" "$i.${f##*.}";
((i++));
done
Eu também quero que jpeg
se torne jpg
.
Tente algo como
ext=$( echo "$i.${f##*.}" | tr [A-Z] [a-z] ) mv -- "$f" $i$ext
ou para nomes de arquivos de tamanho fixo.
dest=$(printf '08d%' $9)$( echo "$i.${f##*.}" | tr [A-Z] [a-z] ) mv -- "$f" $dest
c
Você pode usar ${parameter/pattern/string}
para pesquisar / substituir e ${parameter,,pattern}
para converter em minúsculas.
i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
EXT="${f##*.}"
EXT=${EXT,,}
EXT=${EXT/jpeg/jpg}
mv -- "$f" "$i.${EXT}";
((i++));
done
Dois passos:
converter extensões:
for file in *.GIF; do mv $file ${file%GIF}gif; done
for file in *.jpeg; do mv $file ${file%jpeg}jpg; done
...
números de arquivos:
for file in *.gif *.jpg ...; do mv $file $i$file; ((i++)); done
Se você tem (p) renomear, você pode escrever isto:
shopt -s nullglob;
i=1;
for f in *.{jpg,JPG,jpeg,JPEG,png,PNG,gif,GIF}; do
rename 's/.*\.(.*)$/'$((i++))'.\L$1/; s/jpeg$/jpg/' "$f";
done