如何使用Python复制文件夹结构的第一层目录(不含子内容)
问题结论
完全有可实现的方案,核心目标是仅在b目录下创建和a目录下a1、a2、a3同名的空文件夹,不复制这些文件夹内部的任何子文件、子目录,不同操作环境下的具体实现方式如下:
命令行快速实现
Windows 环境
- 命令提示符(CMD)下可直接使用xcopy命令:
xcopy a\* b\ /t /e /level:1
参数说明:/t 表示仅复制目录结构不复制任何文件,/e 表示会创建空目录,/level:1 限制仅复制a目录下的第一级子目录,不会递归读取a2、a3内部的子文件夹。
- PowerShell环境可使用以下命令:
Get-ChildItem -Path a -Directory | ForEach-Object { New-Item -ItemType Directory -Path (Join-Path b $_.Name) }
逻辑是遍历a目录下所有一级子文件夹,直接在b目录下创建同名空文件夹,全程不会读取原文件夹内的任何内容。
Linux/macOS 环境
- 终端下可使用find命令快速创建:
find a -maxdepth 1 -type d ! -path "a" -exec mkdir -p b/{} \;
参数说明:-maxdepth 1 限定仅查找a目录下的第一级目录项,排除a目录本身后,逐个在b路径下创建对应同名空文件夹,不会递归处理深层目录。
- 也可使用rsync通过过滤规则实现:
rsync -av -f'+ */' -f'- *' --include='a/*/' --exclude='a/*/*/' a/ b/
规则会过滤掉所有文件和二级及以上的子目录,仅同步a下的一级子文件夹本身。
手动操作方法
如果不想使用命令,也可以手动操作:
- 先打开a目录,选中a1、a2、a3三个文件夹,按住
Ctrl(macOS为Option键)拖拽到b目录完成复制 - 复制完成后进入b目录,分别打开a1、a2、a3,删除里面所有被带过来的子文件、子文件夹即可,该方法适合子目录数量少的场景。
内容的提问来源于stack exchange,提问作者Luca.D
相关产品推荐
相关产品推荐

