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


137

我有脚本:

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

SourceDir 还包含子文件夹。

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

怎么修 ?


抱歉,忘记添加-name“ * .txt”
user710818 2011年

Answers:


289
cp -r ./SourceFolder ./DestFolder

6
因此,为了明确起见,大写-R选项将再次复制根目录。small -r选项使根路径保持相同。
AnneTheAgile 2014年

8
@AnneTheAgile-根据我的测试,根据手册页,-r和-R没有区别。
aaaaaa 2015年

@ aaaaaa,ty!您在哪个操作系统/版本上?后来我发现,bash命令在各个操作系统之间似乎可以有所不同。
AnneTheAgile 2015年

2
cp不是bash命令,而是单独的可执行文件,因此它是系统特定的。另一方面,不同操作系统上的true bash命令相同。
lanzz 2015年

52

简单副本的代码。

cp -r ./SourceFolder ./DestFolder

具有成功结果的副本的代码

cp -rv ./SourceFolder ./DestFolder

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

cp -rf ./SourceFolder ./DestFolder

有关详细信息的帮助

cp --help
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.