创建目录树的自动化方法

Nis*_*ish 11 command-line directory

我正在尝试从 A 到 Z 创建一个目录树,其中下一个目录位于当前目录中。

例如:B 在 A 内,C 在 B 内,依此类推。

-A
--B
---C
----...Z
Run Code Online (Sandbox Code Playgroud)

关于如何以自动化方式完成它的任何线索?

mur*_*uru 25

使用mkdir,printf和 bash 的大括号扩展:

$ mkdir -p "$(printf "%s/" {A..Z})"
$ tree A
A
??? B
    ??? C
        ??? D
            ??? E
                ??? F
                    ??? G
                        ??? H
                            ??? I
                                ??? J
                                    ??? K
                                        ??? L
                                            ??? M
                                                ??? N
                                                    ??? O
                                                        ??? P
                                                            ??? Q
                                                                ??? R
                                                                    ??? S
                                                                        ??? T
                                                                            ??? U
                                                                                ??? V
                                                                                    ??? W
                                                                                        ??? X
                                                                                            ??? Y
                                                                                                ??? Z

25 directories, 0 files
Run Code Online (Sandbox Code Playgroud)
  • {A..Z}扩展到A B ... Z,
  • printf "%s/"/在它们之后打印参数,所以我得到A/B/...Z/
  • mkdir -p创建A/B/.../Z与创建所需的任何父目录的目录。

  • 假设您将后续问题作为实际问题而不是在评论中发布,并且没有使用图像而是文本。那会好很多,不是吗? (11认同)
  • @Nish `mkdir` 命令中有一个 `-p`。 (3认同)

Ser*_*nyy 7

在非常简单的层面上,您可以利用{A..Z}扩展生成所有字母,然后迭代生成并输入每个字母:

~/test_directory$ for d in {A..Z}; do mkdir "$d"; cd "$d"; done
~/test_directory/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z$ 
Run Code Online (Sandbox Code Playgroud)

正如您在我的提示输出中看到的,现在您已经完全链接了目录。

但是,如果实际的目录名称与字母表不同,则您必须以某种方式提供目录名称列表,也许是通过一个文件,您可以在该文件上进行迭代并再次执行相同的过程。基本上,这

while IFS= read -r dir_name;do mkdir "$dir_name"; cd "$dir_name" ;done < directory_list.txt
Run Code Online (Sandbox Code Playgroud)