34

我想在 bash 脚本中创建一个复杂的目录结构,并认为以下内容会起作用:

mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags}

这将创建:

          tmpdir
    ________|______
   |        |      |
branches   tags  trunk
                   |
                 sources
               ____|_____
              |          |
          includes     docs

但是,当我运行我的脚本时,我最终得到:

tmpdir
   |
trunk

有没有一种快速简便的方法可以做到这一点,或者我将不得不求助于

mkdir -p tmpdir/trunk/sources/includes
mkdir -p tmpdir/trunk/sources/docs
mkdir -p tmpdir/branches
mkdir -p tmpdir/tags
4

2 回答 2

18

将 shebang 更改为

#!/bin/bash

使用 bash 运行脚本,因为它支持大括号扩展。

问题是您使用的 shell 不支持它。你/bin/sh没有指向/bin/bash但指向类似的东西/bin/dash

https://wiki.ubuntu.com/DashAsBinSh#A.7B

于 2013-07-16T10:59:11.717 回答
-1

您可以尝试为此使用

sudo apt install tree
tree -d .

这是一个很棒的工具,可以打印类似控制台的树形目录结构:

├── logstash   
│   ├── afolder
│   ├── bfolder  
│   └── mappings  
├── elastic 
│   └── afolder  
└── reports  
    └── afolder  
于 2018-08-27T13:29:41.353 回答