我可以在每行的一个rsync过滤规则文件中检查多个文件扩展名吗?


0

我有一个工作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/"

通常rsync,你可以写类似rsync -rv --include '*/' --include '*.html' --include '*.php' --exclude '*' --prune-empty-dirs Source/ Target/ ,如果你要包括所有的*.html*.php文件,并排除其他的(--exclude '*')和空目录(删节),但扫描人的目录*/。你试过--include 吗?
哈斯图尔2016年

包含规则.publish在层次结构中的文件中指定。每个文件还指定子目录是否也应该被rsynced。我们希望完全控制已发布的文件。所以全局包括所有*.vhdl文件是没有选择的。
Paebbels
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.