我有一个场景,我想创建一个如下所示的文件夹结构。我怎样才能for以这种方式编写一个循环来创建这个结构:
ABC [Parent folder]
-> A1 [child folder]
-> B1 [child folder]
-> C1 [child folder]
-> W1 [child folder]
-> W2 [child folder]
-> W3 [child folder]
-> V1 [child folder]
-> V2 [child folder]
-> V3 [child folder]
Run Code Online (Sandbox Code Playgroud)
我将传入这样的文件:
ABC|A1|B1|C1
ABC|W1|W2|W3
ABC|V1|V2|V3
Run Code Online (Sandbox Code Playgroud)
笔记 :
应将上述文件内容作为输入并创建文件夹。
#ABC - MAIN PARENT DIRECTORY
#REMAINING AFTER ABC are child folders
Run Code Online (Sandbox Code Playgroud)
Gil*_*not 11
使用bash,规范的方式:
while IFS='|' read -r maindir subdir1 subdir2 subdir3; do
mkdir -p "$maindir/$subdir1" "$maindir/$subdir2" "$maindir/$subdir3"
done < file
Run Code Online (Sandbox Code Playgroud)
$ tree ABC
ABC
??? A1
??? B1
??? C1
??? V1
??? V2
??? V3
??? W1
??? W2
??? W3
Run Code Online (Sandbox Code Playgroud)
如果您信任您的输入文件,您可以将其转换为一系列 shell 命令并运行它:
sed 's/^/mkdir -p /;sX|X/{X;s/|/,/g;s/$/}/' file | bash
Run Code Online (Sandbox Code Playgroud)
这将变成诸如
ABC|A1|B1|C1
Run Code Online (Sandbox Code Playgroud)
进入
mkdir -p ABC/{A1,B1,C1}
Run Code Online (Sandbox Code Playgroud)
它可以在第一个条目之后处理一个或多个条目,而不仅仅是三个条目。