directorios corruptos, problema al eliminarlos

directorios corruptos, problema al eliminarlos

Hay un directorio en mi sistema Linux debido a un mal funcionamiento del software, se crean algunos directorios con nombres basura como puede ver a continuación, tengo problemas para eliminarlos.

$ ll
total 1532
drwxr-xr-x   2 sensage sensage   4096 Apr 19 16:56 -?$??
drwxrwxr-x 248 sensage sensage   4096 Apr 23 11:37 .
drwxrwxr-x  99 sensage sensage   4096 Apr 16 14:23 ..
drwxr-xr-x   2 sensage sensage   4096 Apr  6 14:54 }???;?
drwxr-xr-x   2 sensage sensage   4096 Apr 19 03:01 }??=?|
-rw-r--r--   1 sensage sensage     88 Apr 22 13:37 $
drwxr-xr-x   2 sensage sensage   4096 Apr  2 12:43 ?
drwxr-xr-x   2 sensage sensage   4096 Mar 20 02:51 ?=??&?
drwxr-xr-x   2 sensage sensage   4096 Apr 11 08:40 ?;%??;
drwxr-xr-x   2 sensage sensage   4096 Apr 14 09:38 ?:????
drwxr-xr-x   2 sensage sensage   4096 Mar 22 17:21 ?(?>~?
drwxr-xr-x   2 sensage sensage   4096 Apr  1 13:45 ?[???%
drwxr-xr-x   2 sensage sensage   4096 Apr  3 14:03 ?@????
drwxr-xr-x   2 sensage sensage   4096 Apr 12 16:18 ??
drwxr-xr-x   2 sensage sensage   4096 Apr 17 16:38 ??&???
drwxr-xr-x   2 sensage sensage   4096 Mar 25 02:43 ??+???
drwxr-xr-x   2 sensage sensage   4096 Apr 19 00:46 Ü¡?,??
drwxr-xr-x   2 sensage sensage   4096 Mar 28 18:54 ÚŸ??"?
drwxr-xr-x   2 sensage sensage   4096 Mar 27 01:04 ???(?
drwxr-xr-x   2 sensage sensage   4096 Apr 19 22:41 ??ͨ?`
drwxr-xr-x   2 sensage sensage   4096 Apr 15 11:44 ?????-

como puede ver los nombres de los directorios en azul. cuando quiero eliminarlos me sale el siguiente error:

$ ls -1  | grep -v 20 | xargs rm -rf 
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option
rm: invalid option -- ¼
Try `rm ./'-¼$Þ¸Í'' to remove the file `-\274$\336\270\315'.
Try `rm --help' for more information.

¿Qué debo hacer con ellos?

Respuesta1

lsimprimirá caracteres que no sean ASCII (o más bien, caracteres no admitidos en la configuración regional actual) como ?. Esta es una de las razones por las que analizar el resultado de lses algo malo. La salida de lsestá destinada a sermiró. En algunos casos, como este, esos no son los nombres reales que existen en el sistema de archivos.

Pruebe en su lugar algo como (estos eliminarántodoarchivos y directorios, incluidos /path/to/dir)

rm -rf /path/to/dir

o

find /path/to/dir -delete

o

find /path/to/dir -exec rm -rf {} +

o

find /path/to/dir -print0 | xargs -0 rm -rf

Modifique para adaptarlo a sus necesidades. Para eliminar solo archivos, agregue -type fdespués de la ruta en los findejemplos, por ejemplo.

haciendo solorm -rf * dentro de ese directorio(eso esimportante, el directorio de trabajo actual debe ser el directorio cuyos archivos y directorios desea eliminar) también puede ser suficiente.

Ver tambiénPor quénoanalizar ls?

Respuesta2

Un método alternativo para eliminar fácilmente directorios y/o archivos nombrados con caracteres que no se imprimen es determinar el número de inodo de los directorios (o archivos) errantes y, utilizándolo, eliminar el directorio (o archivo):

cd /mypath || exit 1
ls -il    #...to show the inode <number> in the leftmost column output
find . -xdev -inum <number> -exec rm -rf {} +

La -xdevopción asegura que findno descienda de directorios en otros sistemas de archivos. Se garantiza que los números de inodo serán únicos sólo dentro de un sistema de archivos.

Agregue '-f' como findopción adicional para devolver solo archivos.

información relacionada