1
resposta

Script falhará se houver mais de um arquivo com mesmo nome em diretórios diferentes

Neste seguinte trecho de código, repare no comando find:

    cd $1
    for arquivo in *
    do
        local caminho_arquivo=$(find ~/Downloads/imagens-novos-livros -name $arquivo)
        if [ -d $caminho_arquivo ]
        then
            varrer_diretorio $caminho_arquivo
        else
            converte_imagem $caminho_arquivo
        fi
    done
}

ele procura o arquivo dentro do diretório fixo ~/Downloads/imagens-novos-livros. Se abaixo deste diretório houver mais de um arquivo com o mesmo nome, o find retornará todos.

A busca não deveria ser feita no diretório fixo, e sim no diretório que foi passado como parâmetro ($1) e de alguma forma não buscar recursivamente mas sim olhar somente no diretório atual pois em um diretório abaixo pode haver outro arquivo com o mesmo nome.

Talvez a forma mais fácil seja obter o caminho do arquivo através de concatenar o parâmetro da função (caminho atual) com a variável arquivo do for, algo como: caminho_arquivo=$("${1}/${arquivo}").

1 resposta

Olá Nicolas, tudo bem?

Sinto muito pela demora no retorno!

Excelente sua observação, muito obrigada por trazer aqui no fórum. Vou deixar salvo aqui para que em uma futura atualização do curso possa ser acrescentado uma versão do script com o uso desse comando.

Sobre o uso do find, acredito que a ideia do instrutor foi rodá-la no terminal para demonstrar seu funcionamento para que posteriormente seja implementada no script, mas excelente a opção que você sugeriu.

No mais, obrigada por contribuir conosco, assim podemos melhorar cada vez mais!

Abraços e bons estudos 😄