Bash 脚本创建多个目录和子目录

Bash 脚本创建多个目录和子目录

我目前正在使用以下两个脚本来创建多个目录和子目录。第一个脚本创建“/Dir1/Dir2”,然后第二个脚本将多个子目录添加到“Dir2”。

#!/bin/bash
# Creates directories and subdirectories from text file
cat *.txt | xargs -L 1 mkdir -p 

#!/bin/bash
# Lists all directories in current working directory and create subdirectories 
LIST=`ls -D`
for i in $LIST;
do
mkdir -p $i"/Dir3/Dir4/"
done

我已将两个脚本合并,但子目录 Dir3 和 Dir4 是在 Dir1 中创建的,而不是预期的 Dir2。由于我对脚本的了解非常有限,我无法成功找到答案,因此向你们寻求帮助。

答案1

很难说出你想做什么,但我认为这可以满足你的要求:

#!/bin/bash

cat *.txt | while IFS= read -r line; do
    mkdir -p -- "$line/Dir3/Dir4"
done

这将读取.txt当前目录中的所有文件并创建一个路径为 的文件夹./<line from file>/dir3/dir4

如果这是您想要的结果,那么它不起作用的原因是它$(ls -D)只会列出当前目录中的文件。它不会递归到子目录中。因此,即使第一个脚本创建了一个dir1/dir2目录,第二个脚本也只会看到该dir1目录。

相关内容