Usando o bash:
Só para ver meus arquivos:
$ ls
café.txt
Verifique os bytes hexadecimais do nome do arquivo (note: o meu pode ser diferente ... o meu provavelmente está codificado em UTF-8):
$ echo * | hexdump -C
00000000 63 61 66 c3 a9 2e 74 78 74 0a |caf...txt.|
0000000a
Em seguida, crie um nome de arquivo usando os códigos hexadecimais para as partes que não são encontradas no teclado:
$ ls $'caf\xc3\xa9.txt'
café.txt
No bash, $ '...' expandirá as fugas (muito parecido com "echo -e"). E \ x seguido por um código hexadecimal de 2 dígitos irá substituí-lo por esse caractere.
E não vejo nada de errado com um:
ls caf*.txt
seguido por um
mv caf*.txt cafe.txt
Mas, se por algum motivo isso corresponder a vários arquivos, você poderá usar o material hexadecimal:
ls $'caf\xc3\xa9.txt'
mv $'caf\xc3\xa9.txt' café.txt