¿Cómo elimino un directorio que parece contener archivos sin nombre?

¿Cómo elimino un directorio que parece contener archivos sin nombre?

Estoy intentando eliminar un directorio supuestamente vacío en un sistema de archivos ReiserFS, pero no puedo porque rmsigo 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 statni hacer nada útil en estos archivos misteriosos. A staten 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 -fbandera 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/thedirectorysin duda destruirá el directorio y los archivos que contiene. ls -B thedirectory | cat -vetambié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.

información relacionada