управление строкой для создания каталогов в unix
Я хочу взять слово в качестве входных данных и создать последовательные каталоги, используя буквы этого слова в оболочке unix. Я попробовал команды sed, awk и fold, но не получил никакого полезного результата. Какой-нибудь совет?
Например: если input равен hello, он должен создавать каталоги h/e/l/l/o как один внутри другого. Другими словами, h будет верхним каталогом, а o - самым глубоким подкаталогом.
2 ответа:
Это должно сделать трюк в любой совместимой с Борном оболочке:
Обратите внимание, что$ mkdir -p $(echo foobar | sed 's:\(.\):\1/:g') $ find f f f/o f/o/o f/o/o/b f/o/o/b/a f/o/o/b/a/r\1является обратным отношением к тексту, сопоставленному первой паре\(...\). Заметьте также, что результатом расширения являетсяmkdir -p f/o/o/b/a/r/- ноmkdirигнорирует косую черту в нашу пользу.
mkdir -p $(echo $1 | sed 's/[0-9a-zA-Z]/\0\//g')EDIT: я полагаю, что некоторые объяснения в порядке:
mkdir -pчтобы создать дерево каталогов- каталог, о котором идет речь, создается из входных данных с преобразованием
Преобразование состоит в том, что любая буква или число превращаются в себя, а за ними следует символ/