excluir ou renomear um arquivo com \ r como o nome do arquivo

11

Eu tenho um pequeno arquivo incômodo cujo nome parece ser um único caractere, e esse caractere é um \r

Como posso excluir isso?

Isso é o que recebo com ls -bl :

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l apenas exibe "?"

    
por Colin 03.04.2012 / 18:35

5 respostas

17

Us ls -li para obter o número de inode do arquivo (primeira coluna), depois use find para excluí-lo (assumindo que inode é 12345):

find . -inum 12345 -exec rm -i {} \;

    
por 03.04.2012 / 18:40
15

use aspas ANSI-C: rm $'\r'

link

    
por 03.04.2012 / 18:49
5

Eu pessoalmente procuraria pelo Python:

>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')

Mas você também pode fazer isso a partir do shell, se entender os caracteres de escape.

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file ‘\r’? y
removed ‘\r’
    
por 03.04.2012 / 18:40
3

Outra maneira rápida de remover um arquivo chamado <carriage return> , se você estiver usando o shell Bash, é:

$ rm <control-v><control-m>
    
por 15.05.2012 / 16:13
2

Os nomes dos arquivos de caractere único são incomuns e, se você não tiver outros arquivos desse tipo em seu diretório, poderá tentar isto:

rm ?

Estou com preguiça de aprender ou procurar como citar caracteres estranhos, por isso usei variantes disso várias vezes quando estava preso a arquivos com nomes difíceis.

    
por 03.04.2012 / 22:11