我正在尝试rsync
一个文件夹,但只有一些特定的内容匹配模式,并排除其余文件。我尝试了许多解决方案,遵循了#2503和#111111793的建议,但我无法实现简单的(至少在我看来(副本:/
这是我的文件夹树:
/
- A
- B.html
css/
- .gitkeep
- source.css
- source.min.css
- source.min.css.map
sub/
- source.css
- source.min.css
- source.min.css.map
- ...
js/
- ... Same as CSS
img/
- image.png
- sub/
- image.png
- ...
目标是rsync:
/*.html
根目录下的所有HTML文件(没有其他文件类型(/css/**/*.min.css
递归地将所有构建的文件放入/css和子文件夹/css/**/*.min.css.map
所有递归映射到/css和子文件夹的文件/js/**/*.min.js
递归地将所有构建的文件放入/js和子文件夹/js/**/*.min.js.map
所有递归映射到/js和子文件夹的文件/img/**/*
递归地将所有文件放入/img及其子文件夹
我尝试了很多东西,比如包括/*
和排除*
等等。
一个例子:
rsync -zarv
--include="/*.html"
--include="/js/**/*/min.js"
--include="/js/**/*.min.js.map"
--include="/css/**/*.min.css"
--include="/css/**/*.min.css.map"
--include="/img/***"
--exclude="*"
--delete
./ $to
三星帮我找到了img/
文件夹,并复制了里面的所有内容,包括子文件夹;它与/img/*
和/img/**/*
都不起作用(没有同步的文件,甚至img
文件夹本身也没有同步(。
我不明白。。。我不明白的
有人能帮我吗?
次要问题:glob模式/js/**/*.min.*
似乎不起作用,我们可以只在路径的开头使用通配符吗?
谢谢!
首先尝试包含文件夹本身:
rsync -zarv
--include="/*.html"
--include="/js/"
--include="/js/**/"
--include="/js/**.min.js"
--include="/js/**.min.js"
--include="/js/**.min.js.map"
--include="/css/"
--include="/css/**/"
--include="/css/**.min.css"
--include="/css/**.min.css.map"
--include="/img/***"
--exclude="*"
--delete
./ "$to"/