Lo siento si esto tiene una respuesta en otra parte, no tengo idea de cómo buscar mi problema.
Estaba ejecutando algunas simulaciones en un servidor HPC redhat linux, y mi código para manejar la estructura de carpetas para guardar la salida tenía un error desafortunado. Mi código matlab para crear la carpeta fue:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
donde sp.run_number
había un número entero Olvidé convertirlo en una cadena, pero por alguna razón la ejecución mkdir(folder);
(en matlab) todavía tuvo éxito. De hecho, las simulaciones se ejecutaron sin problemas y los datos se guardaron en el directorio correspondiente.
Ahora, cuando se consulta / imprime la estructura de carpetas, aparece la siguiente situación:
- Cuando intento tabular autocompletar:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/
- Cuando uso
ls
:run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?
. - Cuando transfiero a mi Mac usando rsync, la
--progress
opción muestra:run_\#003/
etc.con (supongo) que el número que coincide con el entero estásp.run_number
relleno con tres dígitos, por lo que la décima ejecución esrun_\#010/
- Cuando veo las carpetas en el buscador veo
run_ run_ run_ run_ run_ run_ run_ run_ run_ run_?
- Mirando esta pregunta y usando el comando
ls | LC_ALL=C sed -n l
obtengo:
run_$
run_\001$
run_\002$
run_\003$
run_\004$
run_\005$
run_\006$
run_\a$
run_\b$
run_\t$
run_$
No puedo acceder a cd
las carpetas con ninguna de estas representaciones.
Tengo miles de estas carpetas, así que tendré que arreglar esto con un script. ¿Cuál de estas opciones es la representación correcta de la carpeta? ¿Cómo puedo referirme programáticamente a estas carpetas para cambiarles el nombre con un nombre formateado correctamente usando un script bash? Y supongo que por curiosidad, ¿cómo diablos sucedió esto en primer lugar?
run_
y tengo que escribir algo
/
. Cualquier otro carácter es válido, incluidos los caracteres de control. No sé qué habría hecho matlab si sp.run_number fuera 0 (probablemente abortar con un error o producir run_
, ya que el byte NUL terminaría la cadena del nombre del directorio). Por supuesto, esto también sería problemático para los valores de 16 bits (o superiores) que tenían un byte NUL en ellos, y también variaría de acuerdo con la endianidad del sistema que ejecuta matlab.
^A
es^
seguido literalmenteA
, sino Ctrl-A (puede escribirlo usando Ctrl-V Ctrl-A ya que Ctrl-A es generalmente un acceso directo para el shell).