问题
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.
回答1:
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.
回答2:
mkdir -p $(echo $1 | sed 's/[0-9a-zA-Z]/\0\//g')
EDIT: I suppose some explanation is in order:
mkdir -pto make a directory tree- the directory in question is made from the input, with a transformation
- the transformation is that any letter or number is turned into itself, followed by a
/character
来源:https://stackoverflow.com/questions/16244046/manupulating-a-string-to-create-directories-in-unix