Remove um arquivo no linux usando o número inode

11

Se você criar um arquivo no UNIX / linux com caracteres especiais, como touch \"la* , não será possível removê-lo com rm "la* . Você tem que usar o número do inode (você pode se você adicionar o \ antes do nome, eu sei, mas você teria que adivinhar como um usuário que ele foi usado na criação do arquivo).

Eu verifiquei a manpage para rm, mas não há metion do número inode. Fazer rm inodenumber também não funciona.

Qual é o comando para isso?

    
por KdgDev 20.05.2010 / 00:05

4 respostas

20

Alguns outros métodos incluem:

escapando dos caracteres especiais:

[~]$rm \"la\*

use o comando find e pesquise apenas o diretório atual. O comando find pode procurar por números de inode e possui uma opção acessível -delete :

[~]$ls -i
7404301 "la*

[~]$find . -maxdepth 1 -type f -inum 7404301
./"la*

[~]$find . -maxdepth 1 -type f -inum 7404301 -delete
[~]$ls -i
[~]$
    
por 20.05.2010 / 00:58
5

Talvez eu esteja sentindo falta de algo, mas ...

rm '"la*'

De qualquer forma, nomes de arquivos não possuem inodes, arquivos possuem. Tentar remover um arquivo sem remover todos os nomes de arquivos que apontam para ele danificará seu sistema de arquivos.

    
por 20.05.2010 / 00:09
5

Se você realmente quiser fazer isso - e seu caso de uso não parece realmente necessário, você pode tentar as ferramentas de depuração do sistema de arquivos. Se você está disposto a perder tudo, é isso.

Por exemplo, para ext2 / 3/4, o comando debugfs tem uma opção "kill_file" que parece ter um inode. Como mencionado em outras respostas, isso irá danificar seu sistema de arquivos, pois haverá entradas de diretório apontando para um arquivo inexistente. A execução de fsck depois poderá consertar isso. É improvável que você possa fazer isso em um sistema de arquivos montado.

Mas eu recomendo strongmente que você use apenas os recursos de escape / cotação e exclua esses arquivos com o comando regular rm como mencionado em uma resposta anterior - e use rm -i para segurança extra quando lidando com nomes de arquivos contendo caracteres globbing como *

    
por 20.05.2010 / 00:46
1

Embora eu recomende strongmente a abordagem "escape the special characters", sempre há o comando clri quando você realmente quer corrupção do sistema de arquivos.

    
por 20.05.2010 / 03:02