Remove um arquivo chamado "."

6

Eu encontrei um arquivo em um diretório chamado "." Não o "." indicando o diretório, mas um arquivo real com conteúdo nele. Isso, como você pode imaginar, está causando todos os tipos de problemas. O problema é que não consigo descobrir como removê-lo. Como eu removeria um arquivo chamado "." sem excluir todo o diretório atual. Aqui está uma lista só para mostrar:

drwx------  2 mysql    mysql     36864 Jun 28 14:11 .
drwxrwxr-x  5 mysql    mysql      4096 Jun 26 06:46 ..
-rw-r--r--  1 user1    users      2287 Jun 24 14:32 .
-rw-rw----  1 mysql    mysql        65 Jun 21 21:16 db.opt
-rw-r--r--  1 mysql    mysql         0 Jun 28 14:11 .hidden

Você pode ver o diretório (.), mas também pode ver o arquivo de propriedade "user1" chamado "." do tamanho do arquivo 2287. Como eu removeria isso? (Rodando o RHEL 4.6).

    
por GregH 28.06.2010 / 23:18

9 respostas

17

Uma maneira é usar o número de inode

ls -i

Obtenha o número de inode do arquivo inválido, finja que é 42

find . -inum 42 -exec rm -i {} \;
    
por 28.06.2010 / 23:24
11

Verifique novamente se não há espaço com ls -alQ :

drwxr-xr-x  2 adam adam 4096 2010-06-28 14:23 "."
-rw-r--r--  1 adam adam    0 2010-06-28 14:23 ". "
drwxr-xr-x 71 adam adam 4096 2010-06-28 14:23 ".."
    
por 28.06.2010 / 23:28
6
por 28.06.2010 / 23:23
4
find -user user1 -print
find -user user1 -delete

Meu palpite não é realmente chamado '.' Há provavelmente um personagem de controle ou similar. O acima remove-lo com base no proprietário. O -print é um teste para evitar surpresas.

    
por 28.06.2010 / 23:22
4

Você pode executar rm com interactive e confirmar apenas os arquivos que deseja excluir:

rm -i ./.
    
por 28.06.2010 / 23:24
4

Então acontece que não foi apenas um "." Havia um caractere de controle no nome (^ M). Como tal, eu acabei de fazer um: rm -i ". ^ M" (controle de seqüência de teclas-V controle-M) e ele foi removido.

    
por 28.06.2010 / 23:34
2

Tem a certeza que é chamado '.' Não tem espaços nem nada, é chamado '. '?

    
por 28.06.2010 / 23:24
1

Por padrão, o rm não remove diretórios, então porque não apenas usar

rm -i .
    
por 28.06.2010 / 23:27
0

Tente ls -il para obter o número de inode ... embora não tenha certeza de onde você vai a partir daí. Talvez dê uma olhada rápida em c para se livrar dele.

Mas se for parte de um rootkit, você precisa de uma instalação limpa mesmo assim ...

    
por 28.06.2010 / 23:24

Tags