Kann ich in einer Rsync-Filterregeldatei pro Zeile nach mehreren Dateierweiterungen suchen?

758
Paebbels

Ich habe ein funktionierendes Rsync-Skript, das rekursiv unsere Verzeichnisstruktur durchläuft und eine .publishDatei pro Verzeichnis lädt . Jede Datei enthält eine Liste der zu veröffentlichenden Dateien. Publizieren bedeutet, Dateien aus einem internen, nicht vollständig geöffneten git-Repository in ein vollständiges Open-Source-Repository zu kopieren. Der Zielordner (Export genannt) wird dann auf GitHub übertragen. Dieser Weg wurde gewählt, weil entweder wir nicht alle Rechte an den Dateien haben, um sie zu veröffentlichen, oder einige Dateien müssen überarbeitet werden, bevor sie an die Öffentlichkeit gelangen :).

Eine .publishDatei sieht so aus:

# 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 

Ich suche nach einer Möglichkeit, die *.vhdlund -Zeile *.filesin einer Zeile zusammenzuführen, indem Sie sync_Command\.(vhdl|files)Folgendes verwenden : (Regexp-Syntax).

Ich habe die rsync-Manpage durchsucht, aber ich habe nur die *Wildcard gefunden, die allgemein zu sein scheint.

Gibt es eine Möglichkeit, mehrere Dateierweiterungen pro Zeile anzugeben?

Dies ist meine Rsync-Befehlszeile:

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 "$" "$src/" "$dst/" 
0
Normalerweise können Sie mit `rsync 'etwas schreiben wie' rsync -rv --include '* /' --include '* .html' --include '* .php' --exclude '*' --prune-empty-dirs Source / Target / `, wenn Sie alle` * .html`- und `* .php'-Dateien einschließen und die anderen (` --exclude '*' `) und das leere Verzeichnis (prune) ausschließen möchten _sub_ verzeichnisse `* /`. Haben Sie "--include" versucht? Hastur vor 8 Jahren 0
Die Include-Regeln werden in den `.publish'-Dateien der Hierarchie angegeben. In jeder Datei wird auch angegeben, ob ein Unterverzeichnis ebenfalls synchronisiert werden soll. Wir möchten die vollständige Kontrolle über die veröffentlichten Dateien haben. Das globale Einschließen aller `* .vhdl'-Dateien ist daher keine Option. Paebbels vor 8 Jahren 0

0 Antworten auf die Frage