![mkdir -p 和 touch 用于创建一系列子目录和文件 -- 它是如何工作的?](https://linux22.com/image/159008/mkdir%20-p%20%E5%92%8C%20touch%20%E7%94%A8%E4%BA%8E%E5%88%9B%E5%BB%BA%E4%B8%80%E7%B3%BB%E5%88%97%E5%AD%90%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%20--%20%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%E7%9A%84%EF%BC%9F.png)
我在教程中找到了这些命令,这些命令创建了一个包含数百个子目录的父目录,然后是一个 touch 命令,该命令在创建的子目录中创建了数百个 26 个空文件:
mkdir -p playground/dir-{00{1..9},0{10..99},100}
touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z}
我的问题是这个语法到底是如何工作的?括号扩展的作用是什么以及00
and0
和 的100
含义是什么?我知道这100
是最后一个值,但我不确定00
和 是如何,0
工作的。 touch 命令也有同样的问题。
请帮助我理解。谢谢。
答案1
好吧,让我们看一下:
1)命令mkdir -p playground/dir-{00{1..9},0{10..99},100}
您只需在 中创建 100 个目录playground/
,每个目录的格式如下:dir-xxx
其中xxx
是数字。到了{00{1..9},0{10..99},100}
,你说的是三件事:
- 创建目录
00x
,其中x
1 到 9 是00{1..9}
其中的一部分 - 创建从 10 到 99 的目录
0xx
,xx
这就是0{10..99}
- 部分创建目录100
2) 当你拥有 1) 中的所有目录时,然后运行touch
命令
您只需按以下格式触摸文件,file-x
其中x
AZ 范围内有一个字符。在这{00{1..9},0{10..99},100}
部分,您只是说,您想要触摸 1) 中创建的目录中的文件。正如您所看到的,大括号中的部分与命令中的部分相同mkdir
。
希望能帮助到你。如果您想更多地了解大括号扩展,您可以阅读以下内容:https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
答案2
请参阅 bash 手册页中的“大括号扩展”。
提供的整数可以带有“0”前缀,以强制每个项具有相同的宽度。
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html