我想用一个单词作为输入并使用unix shell中该单词的字母创建连续的目录。我试过sed,awk和折叠命令,但没有获得任何有用的结果。有什么建议?管理一个字符串以在unix中创建目录
例如:如果输入是hello
,它应该创建h/e/l/l/o
目录作为一个在另一个之内。换句话说,h
将是最高的目录,o
将是最深的子目录。
我想用一个单词作为输入并使用unix shell中该单词的字母创建连续的目录。我试过sed,awk和折叠命令,但没有获得任何有用的结果。有什么建议?管理一个字符串以在unix中创建目录
例如:如果输入是hello
,它应该创建h/e/l/l/o
目录作为一个在另一个之内。换句话说,h
将是最高的目录,o
将是最深的子目录。
这应该做的伎俩在任何兼容的Bourne外壳:
$ 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')
编辑:我想解释一下是为了:
mkdir -p
做一个目录树/
字符
如果你想处理任何字符,'mkdir -p“$(echo”$ 1“| sed's /./ \ 0 \ // g')”'。处理空格字符的附加引号和“任何字符”匹配。 – zebediah49 2013-04-26 19:49:23
当我试过这个,我得到了所有的目录等于0. – scooter 2013-04-26 19:53:09
这是行不通的。什么是'\ 0'应该是?这在FreeBSD上是0,POSIX标准将它定义为未定义的行为。 – Jens 2013-04-26 20:06:39