I want to take a word as input and creating consecutive directories using the letters of this word in unix shell. I tried sed, awk and fold commands but did not obtaiın any useful result. Any advice?
For example: If input is hello
, it should create h/e/l/l/o
directories as one inside another. In other words, h
will be the top directory and o
will be the deepest subdirectory.
This should do the trick in any Bourne compatible shell:
$ 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
Note that \1
is a backreference to the text matched by the first pair of \(...\)
. Note also that the expansion result is mkdir -p f/o/o/b/a/r/
-- but mkdir
ignores the trailing slash to our advantage.