操纵字符串以在unix中创建目录

时间:2013-04-26 19:42:22

标签: unix sed mkdir

我想在unix shell中使用单词的字母作为输入并创建连续目录。我尝试了sed,awk和fold命令但没有获得任何有用的结果。有什么建议吗?

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

2 个答案:

答案 0 :(得分:1)

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

编辑:我想一些解释是有道理的:

  1. mkdir -p制作目录树
  2. 相关目录来自输入,带有转换
  3. 转换是任何字母或数字都会变为自身,然后是/字符

答案 1 :(得分:1)

这应该可以在任何Bourne兼容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

请注意,\1是与第一对\(...\)匹配的文本的反向引用。另请注意,展开结果为mkdir -p f/o/o/b/a/r/ - 但mkdir会忽略尾随斜杠,这对我们有利。