mkdir -p 和 touch 用于创建一系列子目录和文件 -- 它是如何工作的?

mkdir -p 和 touch 用于创建一系列子目录和文件 -- 它是如何工作的?

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

我的问题是这个语法到底是如何工作的?括号扩展的作用是什么以及00and0和 的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},你说的是三件事:

  1. 创建目录00x,其中x1 到 9 是00{1..9} 其中的一部分
  2. 创建从 10 到 99 的目录0xxxx这就是0{10..99}
  3. 部分创建目录100

2) 当你拥有 1) 中的所有目录时,然后运行touch命令

您只需按以下格式触摸文件,file-x其中xAZ 范围内有一个字符。在这{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

相关内容