управление строкой для создания каталогов в 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
чтобы создать дерево каталогов- каталог, о котором идет речь, создается из входных данных с преобразованием
Преобразование состоит в том, что любая буква или число превращаются в себя, а за ними следует символ/