根据匹配的文件夹复制文件

copy files based on matching folder

我有很多文件夹,例如让我们考虑两个文件夹(folder1、folder2),每个文件夹中都有同名的子文件夹(a1、b1)。

例如:

         folder1
              a1
              b1

         folder2
              a1
              b1

我只想将folder1的子文件夹(a1)的内容复制到folder2的子文件夹(a1),类似地,folder1的子文件夹(b1)到folder2的子文件夹(b1)。

我试过脚本 cp -a ./folder1/. ./folder2/a1 但它没有完成工作...

for path in folder1/*/*; do
  echo cp -a "$path" "folder2/${path#folder1/}"
done
  1. 如果您对“建议”感到满意,请删除 echo
  2. 如果你有一个合理的文件系统,请将--reflink添加到cp
  3. 也许您要找的实际上是 rsync,具体取决于此复制的具体工作方式以及初始状态。 (目标最初是空的吗?如果不是,旧内容应该怎么处理?)
  4. 如果你想合理匹配以.开头的名字(即没有...),你可以使用例如?(.@([^.]|.?))* 而不是 *(打开 shopt -s extglob)。