我有一个工作rsync脚本,它递归遍历我们的目录结构并.publish
为每个目录加载一个文件。每个文件都包含要发布的文件列表。发布意味着将文件从内部(而非完全开源)git存储库复制到完整的开源存储库。然后将目标文件夹(称为导出)推送到GitHub。选择这种方式,因为要么我们没有文件的所有权利来发布它们,要么某些文件在上市之前需要返工:)。
一个.publish
文件看起来像这样的:
# git files
.gitempty
# Documentation
README.md
# Package
sync.pkg.vhdl
# Clock-Domain-Crossing (CDC) circuits
sync_Bits.files
sync_Bits.vhdl
sync_Reset.files
sync_Reset.vhdl
sync_Strobe.files
sync_Strobe.vhdl
sync_Vector.files
sync_Vector.vhdl
sync_Command.files
sync_Command.vhdl
# Altera specific implementations
sync_Bits_Altera.vhdl
sync_Reset_Altera.vhdl
# Xilinx specific implementations
sync_Bits_Xilinx.vhdl
sync_Reset_Xilinx.vhdl
我正在寻找一种可能性,通过使用类似:(regexp语法)的方法将行*.vhdl
和*.files
行合并为一行sync_Command\.(vhdl|files)
。
我搜索了rsync手册页,但我刚刚找到了*
通配符,这似乎有点笼统。
是否有可能为每行指定多个文件扩展名?
这是我的rsync命令行:
rsyncOptions=( \
--archive \
--itemize-changes \
--human-readable \
--verbose \
'--filter=:en+ .publish' \
'--filter=- *' \
'--filter=P .git' \
'--filter=P .gitmodules' \
'--filter=P lib/*' \
--delete --delete-excluded --prune-empty-dirs \
--stats)
rsync "${rsyncOptions[@]}" "$src/" "$dst/"
包含规则
—
Paebbels
.publish
在层次结构中的文件中指定。每个文件还指定子目录是否也应该被rsynced。我们希望完全控制已发布的文件。所以全局包括所有*.vhdl
文件是没有选择的。
rsync
,你可以写类似rsync -rv --include '*/' --include '*.html' --include '*.php' --exclude '*' --prune-empty-dirs Source/ Target/
,如果你要包括所有的*.html
和*.php
文件,并排除其他的(--exclude '*'
)和空目录(删节),但扫描人的子目录*/
。你试过--include
吗?