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

如何将指定目录下的子目录内容同步至已有同名目录的目标路径?

解决目录内容更新复制的问题

你的当前命令会将/home/ab/abc下的每个dir*目录整体复制到/home/ab/xyz中,导致目标目录下出现xyz/dir1/dir1这类嵌套结构,不符合“更新已有子目录内容”的需求。

正确的实现方式

根据你的目录结构和需求,有两种简洁的解决方案:

方案1:直接复制(适用于源目录仅一级dir*子目录的情况)

因为你的abc目录下只有一级dir1、dir2子目录,无需递归查找,直接用以下命令即可:

cp -r /home/ab/abc/dir*/* /home/ab/xyz/
  • -r:递归复制目录及所有层级的内容
  • dir*/*:匹配所有dir开头目录下的全部内容,直接映射到目标目录的对应子目录(比如abc/dir1/file.txt会被同步到xyz/dir1/file.txt)

如果需要仅更新源文件比目标文件新的内容(避免重复复制无变化的文件),添加-u选项:

cp -ru /home/ab/abc/dir*/* /home/ab/xyz/

方案2:递归查找(适用于存在多级dir*子目录的情况)

如果后续abc目录下会出现更深层级的dir*子目录,用find配合shell命令实现精准同步:

find /home/ab/abc -type d -name "dir*" -exec sh -c '
  target_dir="/home/ab/xyz/$(basename "$1")"
  cp -r "$1"/* "$target_dir/"
' _ {} \;
  • find /home/ab/abc -type d -name "dir*":递归遍历所有以dir开头的目录
  • basename "$1":提取当前找到的目录的名称(比如从/home/ab/abc/dir1中提取dir1)
  • cp -r "$1"/* "$target_dir/":将源目录下的所有内容复制到目标的对应子目录,实现内容更新

验证结果

执行命令后,可通过以下命令确认同步效果:

ls -l /home/ab/xyz/dir1
ls -l /home/ab/xyz/dir2

确认源目录的内容已同步到目标目录的对应子目录,且没有出现嵌套目录结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:40:27