【问题标题】:copy files based on matching folder根据匹配的文件夹复制文件
【发布时间】:2021-10-28 22:36:42
【问题描述】:

我有很多文件夹,例如让我们考虑两个文件夹(文件夹 1,文件夹 2),每个文件夹内都有同名的子文件夹(a1,b1)。

例如:

         folder1
              a1
              b1

         folder2
              a1
              b1

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

我试过这个脚本 cp -a ./folder1/. ./folder2/a1 但它没有做这项工作......

【问题讨论】:

  • cp 文件夹1/a1/* 文件夹2/a1 ?

标签: bash shell for-loop rsync cp


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

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2019-11-27
    • 2012-03-14
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多