carácter especial en el nombre del archivo (\ # 033OA)


10

Tengo un pequeño problema con un error muy terco durante un rsync. Es causado por un archivo con un carácter especial en su nombre de archivo. Ha habido otros, pero podría solucionarlo haciendo alguna conversión en la codificación del nombre del archivo. Sin embargo, este archivo ni siquiera puedo encontrarlo.

Entonces, esto es lo que dice rsync:

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

Lo primero que uno nota es que el código de caracteres no puede ser hexadecimal u octal, así que lo busqué en Google y solo encontré esto . Entonces puede ser un CURSOR UPpersonaje (o no). He intentado

ls -la *`printf '\033OA'`*

en vano. También he intentado canalizar la salida de ls de ese directorio en odvano.

¿Que más puedo hacer? ¿O qué personaje estoy buscando de todos modos?

Gracias


1
Prueba ls -b, que debería mostrar escapes de estilo C
enzotib

gracias ... ... que ayudó podían moverse con la ayuda de printf entonces ... si volver a publicar este comentario como respuesta, con mucho gusto voy acepto :)
luxifer

Respuestas:


9

Puede usar la -bopción to ls, que muestra caracteres no gráficos como secuencias de escape de estilo C.


1

ls -aqimprimirá todos los nombres de archivo, con un ?carácter no imprimible en lugar de cada uno. En muchas variantes de Unix, ls -ABo ls -Ab(consulte su página de manual) imprimirá escapes octales. Con ls -aq, puede usar la salida mostrada como un patrón de shell.

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

Otra forma de obtener el nombre del archivo de alguna manera es usar la terminación de su shell: ingrese mv .y presione Tabrepetidamente hasta que se inserte el nombre extraño.


ls -qno mostró el archivo mientras que lo ls -bhizo. tal vez porque su nombre de archivo no era, [weird-character]OA.texpero realmente`printf %b '\033OA'`.tex
luxifer 01 de

@luxifer Hay un .al principio del nombre del archivo, por lo que necesita ls -Aqo ls -aq. Y si usa comodines de shell, debe hacer lo .explícito: *no incluirá el archivo pero sí lo .*hará.
Gilles 'SO- deja de ser malvado'

no, no hubo! La salida que publiqué fue de rsync y fue el final de la línea. Rsync primero copia $DESTINATION/.$FILENAMEantes de mover el archivo a su nombre correcto. Por lo tanto, en la fuente, el archivo no tenía .al principio de su nombre. Además, como se dijo, ls -qno habría mostrado el archivo mientras que lo ls -bhizo.
luxifer
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.