linux中快速复制整个目录树结构,核心用cp -r递归复制内容与结构;若仅需空目录骨架,应使用find . -type d -exec mkdir -p "/path/to/dest/{}" \;。

Linux 中快速复制整个目录树结构,核心是用 cp -r(递归复制),但要注意:它复制的是“内容+结构”,不是仅“空目录骨架”。如果只需要纯结构(即所有子目录都创建出来,但不复制任何文件),得用其他方法。
直接复制完整目录树(含文件)
这是最常用场景,比如备份项目、迁移配置:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
基本命令:
cp -r source_dir/ dest_dir/(注意末尾斜杠不影响行为,但建议统一写法) - 若目标目录不存在,
dest_dir会被自动创建;若已存在,则source_dir会作为子目录放进其中 - 加
-v可视化过程:cp -rv source_dir/ backup/ - 加
-a(归档模式)保留权限、时间戳、符号链接等元信息:cp -av source_dir/ mirror/
只复制目录结构(空文件夹,不含任何文件)
适合初始化新环境、搭建模板目录。tree 命令本身不复制,但可配合 find + mkdir 实现:
- 进入源目录:
cd /path/to/source - 执行:
find . -type d -exec mkdir -p "/path/to/dest/{}" \; - 说明:
find . -type d列出所有子目录(包括当前.),{}代表每个路径,-p确保父目录自动创建 - 更简洁写法(需 bash 4.0+):
cp -r --include='*/' --exclude='*' source_dir/ dest_dir/,但兼容性不如 find 方案稳定
用 tree 辅助确认结构是否复制成功
复制前后用 tree 对比,能一眼看出层级和遗漏:
- 查原结构:
tree -d -L 3 source_dir/(只看目录,限3层) - 查目标结构:
tree -d -L 3 dest_dir/ - 若想对比差异,可先输出为文件:
tree -d source_dir/ > src_tree.txt && tree -d dest_dir/ > dst_tree.txt,再用diff比较
小提醒:避免常见坑
-
cp -r dir1 dir2和cp -r dir1/ dir2/效果不同:前者把dir1整个塞进dir2,后者把dir1里内容复制进dir2 - 不要用
rsync -a --include='*/' --exclude='*' ...来只建目录——虽然可行,但对新手易出错,find 方案更直观可靠 - 涉及权限或属主时,普通用户复制到系统目录(如
/etc)需加sudo,但注意sudo cp -r可能改变目标目录属主,慎用










