2

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

例如:如果 input 是,它应该在另一个目录中hello创建目录。h/e/l/l/o换句话说,h将是顶层目录,o也是最深的子目录。

4

2 回答 2

2

这应该可以在任何 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忽略了斜杠对我们有利。

于 2013-04-26T20:14:54.800 回答
1
mkdir -p $(echo $1 | sed 's/[0-9a-zA-Z]/\0\//g')

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

  1. mkdir -p制作目录树
  2. 有问题的目录是从输入中创建的,并进行了转换
  3. 转换是任何字母或数字都变成它自己,后跟一个/字符
于 2013-04-26T19:44:33.637 回答