使用mkdir和touch创建目录结构
我正在网上学习Unix,我遇到了这个问题,以创建一个层次结构。 我已经使用mkdir
命令创建了目录,但是在创建目录中的文件时我被卡住了。
我创建目录的命令是
mkdir -p mydir/{colors/{basic,blended},shape,animals/{mammals,reptiles}}
这有两种方法。 还有更多,但概念是相同的:要么扩展你拥有的,要么迭代列表并将每个列表项分成几部分。
很长的路要走
touch
没有什么特别需要做的。 只需扩展与mkdir
命令相同的参数即可包含文件。
bash-4.3$ mkdir -p mydir/{colors/{basic,blended},shape,animals/{mammals,reptiles}} bash-4.3$ tree mydir mydir ├── animals │ ├── mammals │ └── reptiles ├── colors │ ├── basic │ └── blended └── shape 7 directories, 0 files bash-4.3$ touch mydir/{colors/{basic/{red,blue,green},blended/{yellow,orange,pink}},shape/{circle,square,cube},animals/{mammals/{platipus,bat,dog},reptiles/{snakes,crocodile,lizard}}} bash-4.3$ tree mydir mydir ├── animals │ ├── mammals │ │ ├── bat │ │ ├── dog │ │ └── platipus │ └── reptiles │ ├── crocodile │ ├── lizard │ └── snakes ├── colors │ ├── basic │ │ ├── blue │ │ ├── green │ │ └── red │ └── blended │ ├── orange │ ├── pink │ └── yellow └── shape ├── circle ├── cube └── square
简短的方法
如果您观察,您的所有目录都有要创建的文件。 因此,我们可以做的是创建项目列表(实际上是一个bash数组)并迭代它们,使用带有后缀删除的mkdir
然后touch
。 像这样:
bash-4.3$ arr=( mydir/{colors/{basic/{red,blue,green},blended/{yellow,orange,pink}},shape/{circle,square,cube},animals/{mammals/{platipus,bat,dog},reptiles/{snakes,crocodile,lizard}}} ) bash-4.3$ for i in "${arr[@]}"; do mkdir -p "${i%/*}" && touch "$i"; done bash-4.3$ tree mydir mydir ├── animals │ ├── mammals │ │ ├── bat │ │ ├── dog │ │ └── platipus │ └── reptiles │ ├── crocodile │ ├── lizard │ └── snakes ├── colors │ ├── basic │ │ ├── blue │ │ ├── green │ │ └── red │ └── blended │ ├── orange │ ├── pink │ └── yellow └── shape ├── circle ├── cube └── square 7 directories, 15 files
附注:如果您在任何文件或目录名称中有空格,请确保您对这些项目进行单引号或双引号,例如:
arr=( mydir/{'with space',without_space/{file1,file2}} )
另见 。
mkdir -p mydir/{colors/{basic,blended},shape,animals/{mammals,reptiles}} touch mydir/colors/{basic/{red,blue,green},blended/{yellow,orange,pink}} touch mydir/shape/{circle,square,cube} touch mydir/animals/{mammals/{platypus,bat,dog},reptiles/{snakes,crocodile,lizard}}
这是完美的解决方案…..