将文件复制到相同结构的目录中,不含父文件夹

将文件复制到相同结构的目录中,不含父文件夹

我有一些.html文件需要从一个地方复制到另一个地方。

源文件夹包含除 之外的文件.html,因此我需要首先仅查找文件.html,然后将它们复制到其他目录,同时保持相同的结构。

像这样的东西:

cp --parents `find ./src -name '*.html'` ./dist

问题是文件放在里面./dist/src/**/*.js而不是./dist/**/*.js.

总而言之,我想将所有文件(同时保持文件夹结构)从一个文件夹复制到另一个文件夹,而无需源父文件夹。

例如:

src/
  folder1/
    a.html
    a.x
  folder2/
    folder3/
      b.html

dist/
  folder1/
    a.html
  folder2/
    folder3/
      b.html

答案1

rsync -rmv --include='*/' --include='*.html' --exclude='*' src/ dest

-r 递归,-m 修剪空目录,-v 详细。默认情况下,rsync 复制所有内容,因此我们仅包含带有 .html 后缀的文件并排除其他所有内容。--include='*/'存在是为了强制 rsync 下降到目录中,没有它它不会复制任何内容。 src 后面的尾随/很重要,这样 src 本身就不会复制到 dest 中。

查看man rsync您是否想要复制模式、所有权等并添加相关选项。

相关内容