Estoy intentando eliminar un directorio supuestamente vacío en un sistema de archivos ReiserFS, pero no puedo porque rm
sigo quejándome de que el directorio no está vacío.
$ rm -rf thedirectory
rm: cannot remove `thedirectory': Directory not empty
$ ls -a thedirectory
. ..
El problema es que todo lo que hago para tratar de determinar lo que realmenteesen el directorio parece mostrar que hay tres archivossin nombres. Por ejemplo:
$ 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 no puedo obtener nombres de archivos, no puedo ejecutar stat
ni hacer nada útil en estos archivos misteriosos. A stat
en el propio directorio produce resultados aparentemente normales:
$ 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
Supongo que hay algún tipo de corrupción en el sistema de archivos, lo que probablemente significa que tengo que apagar, arrancar desde una unidad USB activa y probar suerte con reiserfsck
. ¿Pero hay alguna manera más fácil de lidiar con esto?
Respuesta1
Darle la -f
bandera a rm significa que no se quejará cuando no pueda hacer algo, tal vez algo como intentar eliminar un archivo propiedad de otro usuario (por ejemplo, root) o que no tenga permisos de escritura en el directorio. sudo rm -rf /path/to/thedirectory
sin duda destruirá el directorio y los archivos que contiene. ls -B thedirectory | cat -ve
también puede ser esclarecedor.
Respuesta2
¿Has intentado eliminar el inodo directamente?
$ ls -iN | cat -A
794539 $
$ find . -inum 794539 -exec rm -i {} \;
Respuesta3
Puedes ver todos los archivos con
ls -la /name/of/path
...que le dará una lista larga, incluidos los archivos punto.
Para eliminar un directorio y todo lo que contiene, incluidos otros subdirectorios, utilice:
rm -rf /name/of/path/*
...aunque tenga cuidado si planea utilizar el carácter comodín, que lleva a la (in)famosa declaración:
rm -rf *
...lo cual es peligroso, incluso para los "usuarios normales". Si alguna vez necesita utilizar el carácter comodín, le sugeriría:
rm -rf /name/of/path
o
rm -rf ./*
... el último con la barra diagonal hecha asumiendo que estás "dentro" del directorio que deseas vaciar... aún necesitarás bajar un directorio y eliminarlo desde fuera de sí mismo.