如何在bash目录中的目录中操作

时间:2018-04-30 21:50:34

标签: bash for-loop directory

我正在努力将目录中的内容放入其父目录,所有这些都在另一个目录中工作。如果每个目录都是一个图层,我试图将内容从第三层复制到第二层,然后删除第三层。到目前为止,我有:

for d in "$layer1"/*; do

    temp=$(removespaces "$d")

    layer2=$(removeExtension "$temp")

    cp -r "$d" "$layer2"

    rm -r "$d"

    for dir in "$layer2"/*; do

        cp "$dir" "$layer2"

        rmdir "$dir" #This is the third layer(directory)
    done

done

第一个for循环的开头只是用我之前声明的一些函数重命名目录,没有问题。

如何在第二层复制第三层的内容?

1 个答案:

答案 0 :(得分:1)

最后cp需要复制单个文件,而不是整个目录。

cp "$dir"/* "$layer2"

但是你可以更简单地使用mv完成这一切,并在路径名中使用两个通配符来获得第3级。

for d in "$layer1"/*; do
    temp=$(removespaces "$d")
    layer2=$(removeExtension "$temp")
    mkdir -p "$layer2"
    mv "$d"/*/* "$layer2"
    rmdir "$d"
done