Digamos que queira fazer a conversão de diversos arquivo e os mesmos tem nome com espaços, tipo curso de linux.jpg ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Digamos que queira fazer a conversão de diversos arquivo e os mesmos tem nome com espaços, tipo curso de linux.jpg ?
Olá Leonardo! Excelente pergunta. Quando temos arquivos com espaços nos nomes, o shell pode interpretar esses espaços como separadores de argumentos, o que pode gerar erros na execução de comandos. Para lidar com esse tipo de situação, podemos utilizar aspas para indicar que um conjunto de caracteres deve ser considerado como um único argumento.
for arquivo in *; do
if [ -f "$arquivo" ]; then
novo_nome=$(echo $arquivo | sed 's/.jpg/.png/g')
convert "$arquivo" "$novo_nome"
fi
donePerceba que, no caso do comando "convert", utilizamos aspas em torno dos argumentos "$arquivo" e "$novo_nome". Dessa forma, o shell irá considerar os espaços nos nomes dos arquivos como parte dos argumentos e a conversão será realizada corretamente.