Usei a própria lógica da recursividade para sair do diretório:
#! /bin/bash
conversao() {
# converte arquivo
local nome_sem_extensao=$(ls $1 | awk -F. '{ print $1 }' )
convert $1 $nome_sem_extensao.png
}
varredura_recursiva() {
cd $1
for item in *
do
if [ -d $item ]; then
varredura_recursiva $item
else
conversao $item
fi
done
cd ..
}
FOLDER=$HOME/Development/shell_scripts/imagens-livros
if [ -d $FOLDER ]; then
varredura_recursiva $FOLDER
else
echo 'Diretório inexistente!'
fi
isso resolve o problema do find já relatado nos comentários anteriores, mas deixa o algoritmo "perigoso". Na verdade, nem há nem a necessidade de passar a pasta como argumento, tudo pode ser feito dessa forma também.
#! /bin/bash
conversao() {
# converte arquivo
local nome_sem_extensao=$(ls $1 | awk -F. '{ print $1 }' )
convert $1 $nome_sem_extensao.png
}
varredura_recursiva() {
for item in *
do
if [ -d $item ]; then
cd $item
varredura_recursiva
else
conversao $item
fi
done
cd ..
}
FOLDER=$HOME/Development/shell_scripts/imagens-livros
if [ -d $FOLDER ]; then
cd $FOLDER
varredura_recursiva
else
echo 'Diretório inexistente!'
fi
a própria natureza recursiva, junto com o empilhamento do vetor dos arquivos a cada chamada, já se encarrega de tudo