2016-03-23 6 views
1

Ich versuche, rekursiv durch eine Ordnerstruktur zu gehen und eine Reihe von pom.xml-Dateien zu aktualisieren. Ich möchte nur meine Versionsnummer aktualisieren, also versuche ich so genau wie möglich zu sein. Was will ich ändern ist:Rekursives Suchen und Ersetzen in der Befehlszeile mit Sonderzeichen

<version>5.1.1</version> 

zu

<version>5.2.0</version> 

Im Versuch, die Version Tags aufzunehmen, um sicherzustellen, ersetze ich nicht irgendwelche Kommentare oder Abhängigkeiten dieser gleiche Versionsnummer auf erscheinen.

Ich denke, die Zeichen wie '<,> oder /' verursachen Probleme.

Ich habe nicht viel Erfahrung mit der Flucht von Zeichen wie diese auf der Kommandozeile, so dass jede Hilfe geschätzt wird.

Ich bin auf einem Windows 7-Rechner, habe aber Git Bash und Cygwin installiert.

Antwort

2

Ich verwende entweder ein Tool namens "fart.exe" für diese - wenn der Ersatz einfach ist. https://sourceforge.net/projects/fart-it/

Wenn ich Regex brauche, verwende ich Power Shell. Hier ist ein Beispiel (Mischung aus Batch-Datei und Power-Shell), die eine Versionszeichenfolge in allen XML-Dateien ersetzt:

[replace.bat]:

SET version=1.2.3 
for /r %%x in (*.xml) do ( 
    powershell -Command "& {(Get-Content '%%x') | Foreach-Object { $_ -replace '(''version''\s?\:\s?'')(\d*\.\d*\.\d*)('')', '${1}%version%${3}' } | Set-Content '%%x'}" 
) 
+0

Danke. Fart.exe hat perfekt funktioniert. –