Acessando uma pasta que não posso “nomear” no shell

1

Eu tenho uma pasta teimosa que alguém deve ter criado acidentalmente e que persistiu durante todo esse tempo. Eu posso ver isso com:

# find /var/www/html -maxdepth 1 -type d

que me dá:

/var/www/html
/var/www/html/files
/var/www/html/.?

infelizmente, o ponto de interrogação não é não o caractere real ? , ele meramente parece denotar que não há glifo e / ou tradução adequada para esse caractere. Então, algo como rmdir está fora de questão. Meu sistema tem UTF-8 como a localidade padrão como muitos sistemas Ubuntu modernos, mas admitidamente a pasta em questão pode ter se originado em uma caixa RHEL ou CentOS ( tar ed e descompactada).

# env|grep LANG
LANG=en_US.UTF-8

Ao tentar cd .\? (como mencionado antes, na verdade não é ? ), sou corrigido automaticamente para . por bash e, na verdade, acabo em /var/www/html/. por algum motivo. Agora, se eu não puder "nomear" essa pasta de maneira útil, não posso acessá-la de nenhuma maneira. Como posso me livrar dele sem colocar todo o sistema em risco?

Agora eu instalei o detox , mas ele parece agir apenas em arquivos, não em pastas, de acordo com a documentação. Além disso, ele ainda exige que eu seja capaz de nomear o objeto de alguma forma para fazer algo com ele.

    
por 0xC0000022L 29.02.2012 / 19:59

3 respostas

2

Algumas sugestões, primeiro tente usar a conclusão de tabulação

cd /var/www

rm -rf ./. Separador Separador

Ou use o find

cd /var/www
find -maxdepth 1 -type d -exec rm -ri '{}' \;

Se isso falhar, tente executar o fsck (de um live CD).

Poste qualquer mensagem de erro ou comportamento estranho que você obtiver

    
por Panther 29.02.2012 / 20:12
2

rm -i * faz com que rm solicite a confirmação de qualquer arquivo. Apenas pressione n para todos, exceto aquele e pressione y para o que você deseja remover.

Você também pode adivinhar a quantidade de caracteres com rm -i .??? para 3 caracteres (assim você não riscará y , uma vez que são muitos).

    
por Rinzwind 29.02.2012 / 20:21
1

Se você tiver apenas esses dois diretórios

/var/www/html/files
/var/www/html/.?

em /var/www/html/ , você pode remover o não chamado files com o comando

find . -mindepth 1 -maxdepth 1 ! -name files -exec rm -rf {} \;
    
por enzotib 29.02.2012 / 20:19