Digamos que queira fazer a conversão de diversos arquivo e os mesmos tem nome com espaços, tipo curso de linux.jpg ?
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
done
Perceba 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.