Uma maneira engraçada de lidar com isso, usando o Bash: cd
no diretório (isso é fácil).
Em seguida, verificaremos se um caractere de controle está no nome do arquivo: se você emitir
printf 'strange: %s\n' *[[:cntrl:]]*
você deve ver seu arquivo lá. Se não, tente usar outra classe de caracteres ou modifique o glob para que corresponda ao seu nome de arquivo. (Mas muito provavelmente, você só terá o bizarro.) Então, três possibilidades:
-
O comando anterior apenas emitiu seu arquivo bizarro. Então, fácil, basta renomeá-lo:
mv -nv *[[:cntrl:]]* a_less_bizarre_name
feito!
-
O comando anterior emitiu vários nomes de arquivos com nomes bizarros. Em seguida, renomeie todos como:
i=0 for biz in *[[:cntrl:]]*; do mv -nv "$biz" a_less_bizarre_name$((++i)) done
feito!
-
O comando anterior gera vários nomes, mas você só quer alterar um. Neste caso, vamos colocá-los todos em uma matriz, imprimi-los todos com um número na frente e, em seguida, vamos selecionar apenas o que queremos:
bizarre=( *[[:cntrl:]]* ) for index in "${!bizarre[@]}"; do printf "%s --> %s\n" "$index" "${bizarre[index]}" done # Then, look at the index of the one you want to rename # If its index is 42, issue: mv -nv "${bizarre[42]}" a_less_bizarre_name
feito!
Observação. Se você usar esses comandos, certifique-se de usá-los com as citações apropriadas (ou seja, as citações que eu dei). Não altere as citações!
Observação. É muito provável que você queira primeiro emitir o mv
I com um echo
na frente, apenas para ver o que ele fará, por exemplo,
echo mv -nv *[[:cntrl:]]* a_less_bizarre_name
e remova o echo
quando estiver satisfeito com isso! De qualquer forma, estou usando a opção -n
para não sobrescrever um arquivo existente. Todos esses comandos são bastante seguros se você usá-los como eu os digitei.
Boa sorte!