Mam działający skrypt rsync, który rekurencyjnie przechodzi przez naszą strukturę katalogów i ładuje jeden .publish
plik na katalog. Każdy plik zawiera listę plików do opublikowania. Publikowanie oznacza kopiowanie plików z wewnętrznego, nie w pełni otwartego źródła repozytorium git do pełnego repozytorium open source. Folder docelowy (zwany eksportem) jest następnie przesyłany do GitHub. Ten sposób został wybrany, ponieważ albo nie mamy wszystkich praw do plików, aby je opublikować, albo niektóre pliki wymagają przeróbki przed opublikowaniem :).
ZA .publish
plik wygląda tak:
# 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
Szukam możliwości scalenia *.vhdl
i *.files
linie w jednej linii, używając czegoś takiego: sync_Command\.(vhdl|files)
(składnia regexp).
Przeszukałem strona man rsync , ale właśnie znalazłem *
symbol wieloznaczny, który wydaje się być nieco ogólny.
Czy istnieje możliwość określenia wielu rozszerzeń plików na linię?
To jest moja linia poleceń 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/"
.publish
pliki w całej hierarchii. Każdy plik określa również, czy podkatalog powinien być zsynchronizowany, z. Chcemy mieć pełną kontrolę nad publikowanymi plikami. Tak globalnie, w tym wszystko *.vhdl
pliki nie są opcją.
rsync
możesz napisać coś takiegorsync -rv --include '*/' --include '*.html' --include '*.php' --exclude '*' --prune-empty-dirs Source/ Target/
jeśli chcesz uwzględnić wszystkie*.html
i*.php
pliki i wyklucz inne (--exclude '*'
) i pusty katalog (śliwka), ale skanowanie al pod katalogi*/
. Próbowałeś--include
?