TL; DR: Ejecutar ls -1b, buscar el nombre del archivo, copiar la línea en la que aparece y dárselo rm.
Como otros han sugerido, lo más probable es que esto se deba a limitaciones en la forma, lsy algunos otros programas, incluido el software de cliente y servidor, manejan nombres de archivo extraños, como los que contienen caracteres de control, de forma predeterminada. Su éxito con la respuesta de JdeBP sugiere fuertemente que este fue el caso, aunque hubiera sido una buena apuesta incluso antes de eso.
Para ls, cuando la salida estándar es un terminal, los ?caracteres se imprimen en su lugar. Entonces, si no está canalizando lsla salida de ningún otro comando (o redirigiéndolo a un registro para ver), probablemente su nombre de archivo no contenga caracteres de control. Pero hay otros caracteres problemáticos, tal vez el nombre del archivo contiene espacios en blanco al final, por ejemplo.
Este comportamiento lspuede ser confuso pero no es un error, puede ser anulado explícitamente por el usuario (ver más abajo).
Al intentar acceder o eliminar un archivo de forma remota, los errores en el software del cliente o servidor pueden producir tales problemas.
He experimentado este tipo de cosas a través de ftpmí varias veces , incluso para archivos cuyos nombres contienen espacios finales. (El hecho de que no funcionó se debió a un error en mi cliente ftp). Incluso cuando crea un archivo manualmente usted mismo, dependiendo de cómo lo esté creando, a veces es bastante fácil insertar inadvertidamente un espacio final u otro espacio en blanco que puede parecer espacios aunque no lo sea.
Esta es una situación en la que ls -1b(o dir -1) es útil:
-1le dice lsque muestre una entrada por línea. De esa manera no hay confusión acerca de dónde termina un nombre de archivo y comienza otro. Esto es útil para archivos con nombres raros.
-ble dice lsque imprima secuencias de escape para cualquier personaje especial. La salida de ls -bse puede copiar y pegar literalmente en un comando, sin comillas adicionales : todos los caracteres problemáticos ya se citan de una manera que hace que el shell los reconozca como lo que son.
Solo hay una advertencia: si el último carácter en una línea parece ser \, copie un carácter después de eso, ya que esto significa que \está citando un espacio.
Puede correr ls -1basí, o puede pasarle un patrón de globo (por ejemplo, ls -1b qyx*). Globbing puede o no encontrar el archivo, dependiendo de si los caracteres de control (u otros caracteres extraños) están presentes en la parte del nombre que aparece en el patrón global.
Después de copiar la \versión entrecomillada del nombre de archivo que le proporcionó ls, puede pegarla en un comando. No tiene que modificarlo manualmente de ninguna manera. En su caso, cuando desee eliminar el archivo, escriba rm, escriba un espacio, pegue la línea y presione Enter.
Otras lecturas:
ls -ldesde el directorio, también el plenormde comandos y su salida ..rmcomando?unlinkllamada siempre fallará al encontrar un archivo que no existe. Cuando ejecuto esestracecomando en mi sistema, donde sé que no tengo dicho archivo, produce una salida similar; ¡No creo que eso indique que tengo un problema con el sistema de archivos! Parece mucho más probable que el nombre del archivo sea ligeramente diferenteqyxdshyikfr_fishing_timeout.pngy simplemente aparezca igual debido a las limitaciones en la forma en que selsmuestran los nombres de los archivos, como se sugiere en otras respuestas.