如何在bash中递归复制所有目录和文件?

Posted

技术标签:

【中文标题】如何在bash中递归复制所有目录和文件?【英文标题】:How to copy in bash all directory and files recursive? 【发布时间】:2011-12-24 17:24:23 【问题描述】:

我有脚本:

find ./SourceFolder/ -maxdepth 4 -exec cp -R '' ./DestFolder/ \;

SourceDir 还包含子文件夹。

问题在于,DestFolder 不仅是所有树,而且在上一级所有其他级别和文件。

如何解决?

【问题讨论】:

抱歉,忘记添加-name "*.txt" 【参考方案1】:
cp -r ./SourceFolder ./DestFolder

【讨论】:

所以,澄清一下,大写 -R 选项将再次复制根目录;小 -r 选项保持根路径相同。 @AnneTheAgile - 根据我刚才的测试和手册页,-r 和 -R 没有区别。 @aaaaaa,你!你在哪个操作系统/版本上?后来我发现,bash 命令在不同操作系统之间似乎存在细微差别。 cp 不是 bash 命令,而是单独的可执行文件,因此它是特定于系统的。另一方面,真正的 bash 命令跨操作系统是相同的。 我必须在源文件夹的末尾添加一个斜杠。不知道为什么。我也在使用构建变量。 cp -r "$CONFIG_PATH/" "$CODESIGNING_FOLDER_PATH"【参考方案2】:

简单副本的代码。

cp -r ./SourceFolder ./DestFolder

复制成功的代码

cp -rv ./SourceFolder ./DestFolder

如果源代码包含任何只读文件,它也会复制的强制代码

cp -rf ./SourceFolder ./DestFolder

获取详细帮助

cp --help

【讨论】:

【参考方案3】:

您可能会发现设置属性很方便

cp -arf ./SourceFolder ./DestFolder

【讨论】:

以上是关于如何在bash中递归复制所有目录和文件?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu /bash 下递归重命名文件和目录

如何按文件类型递归查找文件并将它们复制到目录?

如何使用 yml 文件中的 bash 命令将所有文件复制到新目录?

在linux shell(bash)编程中,如何通过递归方式遍历文件

如何在不使用重命名命令的情况下递归搜索目录并从文件名中删除开/关括号? [复制]

如何在 PHP 中递归删除目录及其全部内容(文件 + 子目录)? [复制]