代码之家  ›  专栏  ›  技术社区  ›  RickRilled

如何在bash中的目录中操作

  •  0
  • RickRilled  · 技术社区  · 6 年前

    我正在将目录中的内容放入父目录,同时在另一个目录中工作。如果每个目录都是一个层,我将尝试将内容从第三层复制到第二层,然后删除第三层。到目前为止,我已经:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Barmar    6 年前

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

    cp "$dir"/* "$layer2"
    

    但你可以更简单地使用 mv ,并在路径名中使用两个通配符来获取第三级。

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