Czy mogę sprawdzić wiele rozszerzeń plików w jednym pliku reguł filtrowania rsync w wierszu?


0

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/"

Zwykle z rsync możesz napisać coś takiego rsync -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 ?
Hastur

Reguły dołączania są określone w .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ą.
Paebbels
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.