Juntei os ensinamentos do mestre Rafael Nercessian com algumas pesquisas e outros achados dos colegas aqui no Forum e saiu essa versão que funcionou 100%.
Apesar de funcionar, fiquei intrigado com algo!
#!/bin/bash
varrer_diretorio() {
cd $1
for arquivo in *
do
local caminho_arquivo="$PWD"/"$arquivo"
if [ -d "$caminho_arquivo" ]; then
varrer_diretorio "$caminho_arquivo"
cd ..
else
convert "$caminho_arquivo" "${caminho_arquivo/.jpg/.png}"
fi
done
}
varrer_diretorio /app/imagens-pastas-livros
Quebrei muito a cabeça e depois de muitas tentativas meti um cd ..
após a chamada da função varrer_diretorio
, e finalmente funcionou.
Mas depois de muitas tentativas e comparações com o códgio do mestre, não consegui uma solução sem usar o cd ..
e fiquei intrigado do porquê que o dele funciona sem o cd ..
Alguém aceita o desafio de desvendar?
Abaixo o código do mestre (alterei apenas a pasta raiz).
#!/bin/bash
converte_imagem(){
local caminho_imagem=$1
local imagem_sem_extensao=$(ls $caminho_imagem | awk -F. '{ print $1 }')
convert $imagem_sem_extensao.jpg $imagem_sem_extensao.png
}
varrer_diretorio(){
cd $1
for arquivo in *
do
local caminho_arquivo=$(find /app/imagens-pastas-livros -name $arquivo)
if [ -d $caminho_arquivo ]
then
varrer_diretorio $caminho_arquivo
else
converte_imagem $caminho_arquivo
fi
done
}
varrer_diretorio /app/imagens-pastas-livros