Abra o Terminal e mude para o diretório, depois use o comando listado para remover todas as ocorrências de ?
nos nomes dos arquivos nesse diretório:
cd ~/music/artist/album/
for f in *; do mv -- "$f" "${f//\?/}"; done
Antes de você cometer para executar o comando, você pode testá-lo, o que mostrará o nome do arquivo original seguido por um novo:
for f in *; do echo -- "$f" "${f//\?/}"; done
-- 01 title with?.flac 01 title with.flac
Para fazer isso de forma recursiva, você precisará usar o comando find
e definitivamente tentar primeiro em um diretório de teste . Mexendo nas seqüências de substituição de todos os seus nomes de arquivos pode tornar as coisas muito piores do que melhor. Para operações recursivas como essa, sempre recomendo fazer backup de seus dados de antemão.
O primeiro comando é o dry run, o que significa que nada é realmente alterado. O segundo comando é a coisa real, que recursivamente renomeia todos os nomes de arquivos (eliminando pontos de interrogação) no diretório atual e em todos os subdiretórios :
find . -type f -name '*\?*' | while read f; do echo mv "$f" "${f//\?/}"; done
find . -type f -name '*\?*' | while read f; do mv "$f" "${f//\?/}"; done