![将子文件夹复制到具有相同超级文件夹名称的新文件夹](https://linux22.com/image/916123/%E5%B0%86%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E5%A4%8D%E5%88%B6%E5%88%B0%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E8%B6%85%E7%BA%A7%E6%96%87%E4%BB%B6%E5%A4%B9%E5%90%8D%E7%A7%B0%E7%9A%84%E6%96%B0%E6%96%87%E4%BB%B6%E5%A4%B9.png)
请随时引导我查看过去解决过该问题的论坛帖子,但我至今还没能找到它们。
我想要一个可以在终端中使用的代码,它允许我完成以下操作,但可以扩展到更多文件夹。tfMRI_SOCIAL_RL 是正在移动的文件夹。
第一个目录/1/MNINonLinear/结果/tfMRI_SOCIAL_RL --> 第二个目录/1/MNINonLinear/结果/
第一个目录/2/MNINonLinear/结果/tfMRI_SOCIAL_RL --> 第二个目录/2/MNINonLinear/结果/
第一个目录/3/MNINonLinear/结果/tfMRI_SOCIAL_RL --> 第二个目录/3/MNINonLinear/结果/
非常感谢,布兰登
答案1
如果我正确理解了你的问题,你想要移动的文件夹tfMRI_SOCIAL_RL
包括它们的父文件夹,但不移动父文件夹中可能存在的其他文件或文件夹。
如果firstdirectory
和seconddirectory
位于同一父目录中,则可以使用:
cd /path/to/firstdirectory && mkdir ../seconddirectory && find -type d -name tfMRI_SOCIAL_RL -exec cp -r --parents '{}' ../seconddirectory \; -delete
如果firstdirectory
和seconddirectory
不在同一目录中,请使用
cd /path/to/firstdirectory && mkdir /path/to/seconddirectory && find -type d -name tfMRI_SOCIAL_RL -exec cp -r --parents '{}' /path/to/seconddirectory \; -delete
答案2
我建议使用 rsync。它比 copy 强大得多。
1)如果你只想将一个目录的全部内容复制到另一个目录(这似乎不是事实,因为它非常简单)那么 cp -r 就足够了,但 rsync 会更快。rsync
2)如果您希望能够继续同步两个文件夹并进行增量更改,那么 rsync 是最好的选择(cp 无法做到这一点)
2) 如果你只想复制文件夹名称(即树结构)而不复制文件,那么 rsync 仍然可以提供帮助。请参阅 https://www.cyberciti.biz/faq/unix-linux-bsdosx-copying-directory-structures-trees-rsync/