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 {} \;
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 "?"
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 {} \;
use aspas ANSI-C: rm $'\r'
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’
Outra maneira rápida de remover um arquivo chamado <carriage return>
, se você estiver usando o shell Bash, é:
$ rm <control-v><control-m>
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.
Tags bash linux filesystems