2013-04-26 88 views
2

我想用一个单词作为输入并使用unix shell中该单词的字母创建连续的目录。我试过sed,awk和折叠命令,但没有获得任何有用的结果。有什么建议?管理一个字符串以在unix中创建目录

例如:如果输入是hello,它应该创建h/e/l/l/o目录作为一个在另一个之内。换句话说,h将是最高的目录,o将是最深的子目录。

回答

1

这应该做的伎俩在任何兼容的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忽略了我们的优势。

1
mkdir -p $(echo $1 | sed 's/[0-9a-zA-Z]/\0\//g') 

编辑:我想解释一下是为了:

  1. mkdir -p做一个目录树
  2. 有问题的目录是从输入制作的,具有转型
  3. 改造是任何字母或数字本身变成了,后面跟着一个/字符
+0

如果你想处理任何字符,'mkdir -p“$(echo”$ 1“| sed's /./ \ 0 \ // g')”'。处理空格字符的附加引号和“任何字符”匹配。 – zebediah49 2013-04-26 19:49:23

+0

当我试过这个,我得到了所有的目录等于0. – scooter 2013-04-26 19:53:09

+0

这是行不通的。什么是'\ 0'应该是?这在FreeBSD上是0,POSIX标准将它定义为未定义的行为。 – Jens 2013-04-26 20:06:39

相关问题