Como os caracteres são prováveis caracteres internacionais, eles provavelmente estão aparecendo como códigos de controle no seu conjunto de caracteres en_US, e é por isso que ls os está mostrando como pontos de interrogação.
Isso pode ser devido à escolha da sua distribuição de alias 'ls por padrão no perfil global. Por exemplo:
alias ls='ls -q'
Você pode ver se sua distribuição fez isso digitando no seu shell:
alias ls
O que imprimirá algo como o seguinte:
$ alias ls
alias ls='ls --color=auto'
A página vinculada abaixo sugere que, se você fizer "ls -b", verá os códigos de controle octal para saber pelo menos quais caracteres estão em uso.
http://www.arsc.edu/arsc/support/howtos/nonprintingchars/
Supondo que isso não funcione, você tem outra opção também mencionada mais perto do fundo:
Uma ferramenta que eu desconhecia até agora chamada OctalDump (no Debian - / usr / bin / od)
$ ls | od -b
Mostrará a forma octal dos códigos de controle.
$ ls | od -c
Mostrará os caracteres, incluindo qualquer espaço em branco adicional oculto que possa estar no final (observe os espaços extras no final no exemplo)
Depois de saber quais caracteres de controle estão em jogo e se há espaço em branco oculto adicional, você poderá encontrar uma maneira de fazer o cd no diretório, escapando dos caracteres de controle. Caso contrário, você tem algumas opções para renomear o diretório.
A página acima também, convenientemente, possui um método rápido e sujo para remover os caracteres de controle por meio do comando mv, que acho que funcionará, desde que você escape do espaço, mas NÃO escape dos pontos de interrogação (tornando-os um caractere único) curingas) e desde que não exista mais nada no diretório em que este diretório não autorizado esteja. O motivo desses requisitos explícitos é porque você está usando apenas caracteres curinga e espaço único e, portanto, não deseja que o curinga corresponda inadvertidamente a qualquer outro arquivo ou diretório.
Se o método acima não funcionar, você poderá quase certamente usar o método find mencionado por outras respostas, de uma maneira diferente. Em vez de tentar cd para o diretório usando o número do inode, que foi o que você disse que tentou, você pode renomeá-lo usando o número do inode. Apenas certifique-se de copiar o conjunto inteiro de 3 linhas para esse comando da página acima (substitua a parte "nome desejado" pelo nome real no qual você deseja renomeá-lo).
Depois que o diretório for renomeado, você poderá acessá-lo. Só espero que ele também não contenha arquivos com códigos de controle nos nomes, ou você terá que enxaguar e repetir para cada arquivo (e / ou subdiretório) no diretório que você acabou de renomear, no ponto em que um loop for provavelmente será prudente nomear todos os arquivos como um número, incrementando de 1. :-)
cd */
pode funcionar.*
deve expandir uma descrição compreensível do diretório ecd
ignora argumentos extras. Outra maneira pode ser usar um gerenciador de arquivos gráfico (incluindo o MC baseado em terminal) ou os navegadores de árvore de arquivos embutidos no Vim, por exemplo. Você também pode experimentar a-exec
mudança para ofind, not with
cd` diretamente (que é um shell embutido), mas com, por exemplo,ls
e outras ferramentas.