Você já tentou deletar o inode diretamente?
$ ls -iN | cat -A
794539 $
$ find . -inum 794539 -exec rm -i {} \;
Estou tentando excluir um diretório supostamente vazio em um sistema de arquivos ReiserFS, mas não consigo porque rm
continua reclamando que o diretório não está vazio.
$ rm -rf thedirectory
rm: cannot remove 'thedirectory': Directory not empty
$ ls -a thedirectory
. ..
O problema é que tudo que eu faço para tentar determinar o que realmente é no diretório parece mostrar que há três arquivos sem nomes . Por exemplo:
$ cd thedirectory
$ ls
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
$ find .
.
./
./
./
$ ls -N | cat -A
$
$
$
Como não consigo obter nomes de arquivos, não posso executar stat
ou qualquer coisa útil nesses arquivos misteriosos. Um stat
no próprio diretório gera resultados aparentemente normais:
$ stat .
File: '.'
Size: 192 Blocks: 0 IO Block: 4096 directory
Device: 807h/2055d Inode: 825484 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ diazona) Gid: ( 1000/ diazona)
Access: 2012-01-27 16:32:45.000000000 -0500
Modify: 2012-01-27 16:31:58.000000000 -0500
Change: 2012-01-27 16:31:58.000000000 -0500
Suponho que esteja envolvido algum tipo de corrupção no sistema de arquivos, o que provavelmente significa que tenho de desligar, inicializar a partir de uma unidade USB ativa e tentar a minha sorte com reiserfsck
. Mas há alguma maneira mais fácil de lidar com isso?
Você já tentou deletar o inode diretamente?
$ ls -iN | cat -A
794539 $
$ find . -inum 794539 -exec rm -i {} \;
Dar o -f
flag para rm significa que ele não reclamará quando não puder fazer algo, talvez algo como tentar remover um arquivo de outro usuário (por exemplo, root) ou você não tenha permissões de gravação para o diretório. sudo rm -rf /path/to/thedirectory
irá, sem dúvida, descobrir o diretório e os arquivos nele. ls -B thedirectory | cat -ve
também pode ser esclarecedor.
Você pode ver todos os arquivos com
ls -la /name/of/path
... que lhe dará uma longa lista, incluindo todos os arquivos de pontos.
Para remover um diretório e tudo dentro dele, incluindo outros subdiretórios, use:
rm -rf /name/of/path/*
... embora tenha cuidado se você planeja usar o caractere curinga, o que leva à (famosa) declaração:
rm -rf *
... o que é perigoso, até mesmo para "usuários normais". Se você precisar usar o caractere curinga, sugiro que:
rm -rf /name/of/path
ou
rm -rf ./*
... o último com a barra de pontos sendo feita com a suposição de que você está "dentro" do diretório que deseja esvaziar ... você ainda precisará mover um diretório para baixo e removê-lo de fora em si.