Вибачте, якщо на це є відповідь в іншому місці, я не знаю, як шукати свою проблему.
Я виконував деякі імітації на Redhat Linux сервері HPC, і мій код для обробки структури папок для збереження виводу мав нещасний помилку. Мій код 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/etc. з (я припускаю) число, яке відповідає цілому числу, доданеsp.run_numberдо трьох цифр, тож 10-й запуск -run_\#010/ - Коли я переглядаю папки в пошуку, я бачу
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, як правило, є ярликом для оболонки).