Извините, если есть ответ в другом месте, я не знаю, как искать мою проблему.
Я выполнял некоторые симуляции на HPC-сервере Redhat Linux, и мой код для обработки структуры папок с целью сохранения результатов был неудачной. Мой код Matlab для создания папки был:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
где sp.run_numberбыло целое число Я забыл преобразовать его в строку, но по какой-то причине запуск mkdir(folder);(в Matlab) все же завершился успешно. Фактически, симуляции проходили без сбоев, и данные сохранялись в соответствующем каталоге.
Теперь, когда структура папок запрашивается / печатается, я получаю следующие ситуации:
- Когда я пытаюсь во вкладке автозаполнения:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/ - Когда я использую
ls:run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?. - Когда я перехожу на свой Mac с помощью rsync,
--progressопция показывает:run_\#003/и т. Д. С (я полагаю) числом, совпадающим с целым числом,sp.run_numberдополненным до трех цифр, поэтому 10-й прогонrun_\#010/ - Когда я просматриваю папки в Finder, я вижу
run_ run_ run_ run_ run_ run_ run_ run_ run_ run_? - Глядя на этот вопрос и используя команду,
ls | LC_ALL=C sed -n lя получаю:
run_$
run_\001$
run_\002$
run_\003$
run_\004$
run_\005$
run_\006$
run_\a$
run_\b$
run_\t$
run_$
Мне не удается cdвойти в папки, используя любое из этих представлений.
У меня есть тысячи этих папок, поэтому мне нужно исправить это с помощью скрипта. Какой из этих параметров является правильным представлением папки? Как программно обратиться к этим папкам, чтобы я переименовал их с правильно отформатированным именем, используя скрипт bash? И я думаю, ради любопытства, как, черт возьми, это произошло в первую очередь?
run_мне нужно что-то напечатать
/. Допустим любой другой символ, включая управляющие символы. Я не знаю, что сделал бы matlab, если бы sp.run_number был равен 0 (вероятно, либо прервался с ошибкой, либо произвел run_, так как байт NUL завершил бы строку имени каталога). Конечно, это также было бы проблематично для 16-битных (или более высоких) значений, в которых содержался байт NUL, и также варьировалось бы в соответствии с порядком байтов в системе, выполняющей matlab.
^Aбуквально не^сопровождаетсяA, но Ctrl-A (вы можете набрать его, используя Ctrl-V Ctrl-A, так как Ctrl-A обычно является ярлыком для оболочки).