我在教程中找到了这些命令,这些命令创建了一个包含数百个子目录的父目录,然后是一个 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