【发布时间】:2018-10-11 00:46:18
【问题描述】:
我正在将目录中的内容放入其父目录中,同时在另一个目录中工作。如果每个目录都是一层,我正在尝试将内容从第 3 层复制到第 2 层,然后删除第 3 层。到目前为止,我有:
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 循环的开始只是用我之前声明的一些函数重命名目录,没有问题。
如何将这个第三层的内容复制到第二层?
【问题讨论】:
-
要重命名目录使用
mv,而不是cp,后跟rm。 -
顺便说一句,请记住,当您执行
for d in "$layer1"/*时,如果是layer1='foo',那么您会得到类似d='foo/bar'的信息。因此,使用for d2 in "$d1"/*,你会得到一个d2,比如foo/bar/baz。由于这些是完全合格的路径,因此您无需执行任何操作即可使用它们。 -
不过,除此之外,要说出你在这里做什么有点棘手。您可以编辑它以提供minimal reproducible example 吗?创建旧名称的示例(并定义或删除诸如
removespaces和removeExtension之类的依赖项,因此我们可以自己实际运行它并查看失败的原因),这样说起来会容易得多。