You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按文件扩展名从本地机器复制文件到Docker容器?

解决方案:按文件扩展名复制文件到Docker容器

我懂你现在的需求——想精准复制特定扩展名的文件到Docker容器,而不是整个文件夹。直接用docker cp path/to/folder/*.extension ContainerName:/target/有时候会踩坑,这里分两种场景给你提供靠谱的解决办法:

场景1:仅复制当前目录下的特定扩展名文件

如果你的目标是复制指定文件夹下一级目录里的所有.extension文件,直接用shell通配符就能搞定,前提是shell能正确解析通配符:

docker cp path/to/folder/*.extension ContainerName:/folder/to/docker/container/

小提醒:如果该目录下没有匹配的.extension文件,shell会把*.extension当作一个实际文件名传递,导致docker cp报错。可以先执行shopt -s nullglob(仅适用于bash环境),让通配符无匹配时返回空,避免错误执行。

场景2:递归复制所有子目录中的特定扩展名文件

如果需要遍历所有子目录,复制所有符合扩展名的文件,推荐两种更稳定的方式:

方法1:结合find和docker cp批量复制

用find筛选出所有目标文件,再通过xargs传递给docker cp,能完美处理包含空格、特殊字符的文件名:

find path/to/folder/ -type f -name "*.extension" -print0 | xargs -0 docker cp -t ContainerName:/folder/to/docker/container/
  • -type f:只筛选文件(排除目录)
  • -name "*.extension":指定要匹配的扩展名
  • -print0和xargs -0:确保特殊字符文件名能被正确识别

方法2:通过tar打包传输(兼容性最佳)

先把目标文件打包成流,再通过docker exec在容器内解压,这种方法对复杂目录结构和特殊文件名的兼容性拉满:

tar -cf - -C path/to/folder/ --include="*.extension" . | docker exec -i ContainerName tar -xf - -C /folder/to/docker/container/
  • tar -cf -:将文件打包到标准输出
  • -C path/to/folder/:切换到目标目录再执行打包
  • --include="*.extension":只包含指定扩展名的文件
  • docker exec -i:让容器接收标准输入的tar流并解压到目标路径

内容的提问来源于stack exchange,提问作者ambigus9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:57:42