我目前正在使用以下两个脚本来创建多个目录和子目录。第一个脚本创建“/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
目录。