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

问题描述 投票:2回答:2

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

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

unix sed mkdir
2个回答
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. 转换是将任何字母或数字都转换成其自身,后跟一个/字符
© www.soinside.com 2019 - 2024. All rights reserved.