У меня есть работающий скрипт 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/"

0