¿Cómo eliminar un archivo con varios signos de dos puntos en su nombre?

¿Cómo eliminar un archivo con varios signos de dos puntos en su nombre?

Tengo una carpeta con tantos archivos cuyo nombre tiene varios signos de dos puntos. Por ejemplo: Mail::Message::Field::Full.3pm.gz.

Me pregunto cómo eliminarlos.

Yo he tratado

rm Mail::Message::Field::Full.3pm.gz
rm Mail\:\:Message\:\:Field\:\:Full.3pm.gz
rm "Mail::Message::Field::Full.3pm.gz"

Todo con el mismo resultado: rm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error.

Además lo he probado con mi cuenta de usuario normal y con usuario root. En ambos casos con el mismo resultado que el anterior.

rmcon -fopción tiene el mismo resultado.

El mismo problema se aplica al cambiar el nombre de los archivos.

Y por supuesto, tengo permisos de escritura en esa carpeta.

La salida de ls -les

ls: cannot access Mail::Message::Field::Full.3pm.gz: Input/output error
-????????? ? ? ? ?            ? Mail::Message::Field::Full.3pm.gz

No sé si esto importa pero los archivos están en una partición NTFS.


Actualizar

No creo que sea un problema de hardware. Puedo acceder (escribir, eliminar, crear, descomprimir, etc.) a todos los demás archivos. Aunque no puedo acceder a los archivos problemáticos.

Respuesta1

Es muy importante que el archivo esté en una partición NTFS.

El :signo no es un carácter especial en la mayoría de los sistemas Unix y, en particular, no en Linux (solo /es especial). No tiene ningún significado para el kernel (aunque algunas aplicaciones le dan un significado especial, por lo que es mejor no usarlo). En la mayoría de los sistemas de archivos Unix, incluido el habitual ext2/ext3/ext4 de Linux, puede utilizar :un nombre de archivo como cualquier otro carácter.

NTFS tiene reglas más estrictas (pero opcionales), porque proviene del mundo de Windows. En Windows, :no está permitido en los nombres de archivos (o mejor dicho, está permitido a nivel del kernel pero no es compatible con la mayoría de las aplicaciones).incluyendo los shells predeterminados). Elcontrolador NTFS de código abierto NTFS-3Gintenta evitar que cree nombres de archivos en :él y puede confundirse si encuentra un nombre de archivo no válido existente.

ElManual NTFS-3gEstablece que

siempre crea nuevos archivos en el espacio de nombres POSIX por razones de máxima portabilidad e interoperabilidad. Esto significa que los nombres de archivos distinguen entre mayúsculas y minúsculas y se permiten todos los caracteres excepto '/'y '\0'. Esto es perfectamente legal en Windows, aunque algunas aplicaciones pueden confundirse.

Asegúrese de estar utilizando la última versión del controlador ntfs-3g y de que el sistema de archivos no esté montado con la windows_namesopción.

Respuesta2

Cuando dices que se aplica lo mismo al cambiar el nombre, ¿quieres decir que no puedes cambiarles el nombre, o que logras cambiarles el nombre, pero luego tienes el mismo problema al eliminarlos (probablemente no, supongo).

Solo comprobando, ¿intentaste usar comodines? Si no tienes demasiados archivos, puedes intentar algo como

 rm -i Mail*essag**.gz

Esto -ihará que se le pregunte antes de eliminar, por lo que puede verificar para asegurarse de que solo está eliminando los archivos que desea.

Aunque sospecho que esto es un problema con los permisos o el sistema de archivos, más que con las características del nombre del archivo. O posiblemente una indicación de algún fallo de hardware.

Respuesta3

Después de leer todo esto, sospecho que el sistema de archivos NTFS ha sido dañado.

Recomiendo:

  1. Arrancando en Windows
  2. Realizar una verificación completa del sistema de archivos (las herramientas de Linux todavía no son suficientes para esta tarea)
  3. Reiniciando Linux e intentando nuevamente.

información relacionada