Извините, если есть ответ в другом месте, я не знаю, как искать мою проблему.
Я выполнял некоторые симуляции на 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 обычно является ярлыком для оболочки).