Suche leistungsfähiges Tool zum Suchen und ersetzen in Dateiinhalten
Hallo,
Ich betreue regelmäßig ein komplexes System, das auf Windows als JAVA-Applikation läuft:
Sämtliche Konfigurationen werden da in vielen, vielen einzelnen Textdateien, in vielen verschachtelten Ordnern vorgenommen (also 20-30 Config-dateien).
Nun habe ich das Problem, dass ich mehrere solcher Installationen umziehen muss, wobei sich da jedesmal die IP-Adresse, der Hostname und andere Parameter ändern.
Das Auffinden dieser Dateien, wie es früher mal mit der frühen Win-XP-Suche mal möglich war, ist heute nicht mehr so einfach, denn seit diesem Index-Search kann man ja nie wirklich sicher sein, ob man tatsächlich alle Vorkommen des Suchbegriffs "innerhalb" der Dateien des Suchpfades erwischt...
Dafür habe ich mittlerweile den Agent Ransack für mich entdeckt: Für meine Ansprüche sau-schnell, und zuverlässig!
Doch die Königsdisziplin wäre für mich jetzt noch ein Tool, das sowas, wie ein Search&Replace beherrscht, und diese Parameter in den gefundenen Dateien in einem Rutsch ersetzen kann...
Es muss aber, wie eben Agent Ransack auch, zuverlässig alle Vorkommen in den Dateien finden können!
Kennt jemand ein Tool, das sowas kann?
Hintergrund ist der, dass ich in den kommenden Monaten ca. 80 solcher Installationen unter VMware clonen, bzw. exportieren und mit neuen IP-Adressen und Hostnames auf eine neue, vollkommen unabhängige vSphere-Plattform umziehen muss.
Die alte Installation muss aber vorerst mal parallel weiter funktionieren, um eine Fallback-Lösung garantieren zu können.
Hierzu müssen riesige Datenvolumen (mehrere TeraByte pro System) umgezogen werden, und ich habe für jeweils fünf Server immer nur eine Nacht Zeit. Und diese Zeit möchte ich nicht damit vergeuden, indem ich auch noch in unzähligen Dateien einzelne Parameter händisch umschreiben muss... (Was auch recht fehleranfällig wäre...)
Ganz nebenbei muss ich da auch noch die Registry jedes einzelnen Servers bearbeiten. Doch dafür gibt es ja Gottseidank hilfreiche Funktionen...
Ich hoffe, Ihr versteht mein Problem...
Freue mich sehr auf konstruktive Vorschläge!!
Gruß
Oreus1
Ich betreue regelmäßig ein komplexes System, das auf Windows als JAVA-Applikation läuft:
Sämtliche Konfigurationen werden da in vielen, vielen einzelnen Textdateien, in vielen verschachtelten Ordnern vorgenommen (also 20-30 Config-dateien).
Nun habe ich das Problem, dass ich mehrere solcher Installationen umziehen muss, wobei sich da jedesmal die IP-Adresse, der Hostname und andere Parameter ändern.
Das Auffinden dieser Dateien, wie es früher mal mit der frühen Win-XP-Suche mal möglich war, ist heute nicht mehr so einfach, denn seit diesem Index-Search kann man ja nie wirklich sicher sein, ob man tatsächlich alle Vorkommen des Suchbegriffs "innerhalb" der Dateien des Suchpfades erwischt...
Dafür habe ich mittlerweile den Agent Ransack für mich entdeckt: Für meine Ansprüche sau-schnell, und zuverlässig!
Doch die Königsdisziplin wäre für mich jetzt noch ein Tool, das sowas, wie ein Search&Replace beherrscht, und diese Parameter in den gefundenen Dateien in einem Rutsch ersetzen kann...
Es muss aber, wie eben Agent Ransack auch, zuverlässig alle Vorkommen in den Dateien finden können!
Kennt jemand ein Tool, das sowas kann?
Hintergrund ist der, dass ich in den kommenden Monaten ca. 80 solcher Installationen unter VMware clonen, bzw. exportieren und mit neuen IP-Adressen und Hostnames auf eine neue, vollkommen unabhängige vSphere-Plattform umziehen muss.
Die alte Installation muss aber vorerst mal parallel weiter funktionieren, um eine Fallback-Lösung garantieren zu können.
Hierzu müssen riesige Datenvolumen (mehrere TeraByte pro System) umgezogen werden, und ich habe für jeweils fünf Server immer nur eine Nacht Zeit. Und diese Zeit möchte ich nicht damit vergeuden, indem ich auch noch in unzähligen Dateien einzelne Parameter händisch umschreiben muss... (Was auch recht fehleranfällig wäre...)
Ganz nebenbei muss ich da auch noch die Registry jedes einzelnen Servers bearbeiten. Doch dafür gibt es ja Gottseidank hilfreiche Funktionen...
Ich hoffe, Ihr versteht mein Problem...
Freue mich sehr auf konstruktive Vorschläge!!
Gruß
Oreus1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 368400
Url: https://administrator.de/contentid/368400
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
Also wenn ich dich richtig verstanden habe, willst du massenhaft Inhalte in Textdateien ersetzen!?
Immer mit dem selben Inhalt?
Wenn ja, wäre notepad++ vermutlich das, was du suchst. Du kannst ihm beim Suchen oder Suchen & Ersetzen ein Verzeichnis angeben und er durchsucht alle lesbaren ASCII-Files nach dem zu suchenden Content
Gruß
en-pie
Also wenn ich dich richtig verstanden habe, willst du massenhaft Inhalte in Textdateien ersetzen!?
Immer mit dem selben Inhalt?
Wenn ja, wäre notepad++ vermutlich das, was du suchst. Du kannst ihm beim Suchen oder Suchen & Ersetzen ein Verzeichnis angeben und er durchsucht alle lesbaren ASCII-Files nach dem zu suchenden Content
Gruß
en-pie
Ey wer nutzt hier das Zauberwort ohne was zu bieten .
Kann man sich natürlich auch eine GUI drum bauen wers braucht.
Wer UltraEdit sein eigen nennt der kann das auch mit den hauseigenen Funktionen erledigen.
Und wie immer das allseits bekannte sed.
Grüße Uwe
while($repeat -ne 'n'){
cls
Add-Type -A System.windows.Forms
$search = Read-Host "Suchstring eingeben"
$replace = Read-Host "Ersatzstring eingeben"
Do{$useregex = Read-Host "Werden Regular-Expressions im Such- oder Ersatzstring verwendet? [j/n]"}until($useregex -match '^[jn]$')
Do{$casesense = Read-Host "Groß- und Kleinschreibung beachten? [j/n]"}until($casesense -match '^[jn]$')
write-host "Ordner im Auswahl-Dialog wählen."
$folderbrowser = new-object System.Windows.Forms.FolderBrowserDialog
if ($folderbrowser.ShowDialog() -eq 'OK'){
$folder = $folderbrowser.SelectedPath
}else{
return
}
$folderbrowser.Dispose()
Do{$recurse = Read-Host "Ordner rekursiv durchsuchen? [j/n]"}until($recurse -match '^[jn]$')
$filter = Read-Host "Dateifilter angeben (bsp. *.txt oder )"
if ($recurse -eq 'j'){
$files = gci "$folder\*" -Include $filter -Recurse -Force
}else{
$files = gci "$folder\*" -Include $filter -Force
}
If($useregex -eq 'j'){
$files | ?{(gc $_.FullName) -match $search } | %{
Write-host "Ersetze Pattern in Datei: '$($_.FullName)'" -F Green
if ($casesense -eq 'j'){
(gc $_.Fullname) -creplace $search,$replace | sc $_.Fullname -Force
}else{
(gc $_.Fullname) -replace $search,$replace | sc $_.Fullname -Force
}
}
}else{
$files | ?{(gc $_.FullName) -like "*$search*" } | %{
Write-host "Ersetze Suchwort in Datei: '$($_.FullName)'" -F Green
if ($casesense -eq 'j'){
(gc $_.Fullname) -creplace [regex]::escape($search),$replace | sc $_.Fullname -Force
}else{
(gc $_.Fullname) -replace [regex]::escape($search),$replace | sc $_.Fullname -Force
}
}
}
Do{$repeat = Read-Host "Neuen Suchen/Ersetzen Vorgang starten? [j/n]"}until($repeat -match '^[jn]$')
}
Wer UltraEdit sein eigen nennt der kann das auch mit den hauseigenen Funktionen erledigen.
Und wie immer das allseits bekannte sed.
Grüße Uwe