У меня есть работающий скрипт 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
Я ищу возможность объединить *.vhdl
и *.files
в одну строку, используя что-то вроде: sync_Command\.(vhdl|files)
(синтаксис regexp).
Я искал справочную страницу по 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/"