Depois de clicar no diretório correto, esse script solucionará de forma confiável sua necessidade (não é possível devido à expansão ${var//pat/str} ):
#!/bin/bash
set -- *_*
for file; do
mv -- "$file" "${file//_/ }"
done
*_* O glob *_* selecionará todos os arquivos que possuem _ em seus nomes.
set -- Esses nomes (incluindo espaços ou novas linhas) serão definidos confiavelmente nos parâmetros posicionais $1 , $2 , etc. com o comando simples set -- "list"
for file; Em seguida, cada parâmetro posicional será (por sua vez) atribuído ao arquivo var.
do ... done contém os comandos para executar (para cada $file ).
mv -- "$file" "${file//_/ }" moverá (renomear) cada arquivo para o mesmo nome com cada (todos) _ substituído por (espaço).
Observação : você pode adicionar a opção -i (interativo) para evitar a substituição de arquivos já existentes. Se o arquivo existir, mv perguntará. Com uma ressalva: é preciso haver um shell interativo em que mv possa se comunicar com o usuário.
mv -i -- "$file" "${file//_/ }"