oreus1
Goto Top

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

Content-Key: 368400

Url: https://administrator.de/contentid/368400

Printed on: April 27, 2024 at 04:04 o'clock

Member: em-pie
Solution em-pie Mar 17, 2018 at 06:54:59 (UTC)
Goto Top
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
Member: Vision2015
Vision2015 Mar 17, 2018 at 07:31:26 (UTC)
Goto Top
Moin..

ja, notepad++ wäre jetzt auch meine erste Idee

Frank
Member: marinux
marinux Mar 17, 2018 at 08:48:03 (UTC)
Goto Top
Powershell?!
Member: drnatur
drnatur Mar 17, 2018 at 09:04:42 (UTC)
Goto Top
Hi,
also ich kann dir auch nur Notepad++ ans Herz legen.
Ich verwende es für meine Homepages, daher bin ich den Umzugsstress gewohnt und Notepad++ hat schon vieles erleichtert, wenns um "Search and Replace" über mehrere Dateien hinweg geht.

Lg
Member: colinardo
Solution colinardo Mar 17, 2018 updated at 12:09:31 (UTC)
Goto Top
Zitat von @marinux:
Powershell?!
Ey wer nutzt hier das Zauberwort ohne was zu bieten face-smile.
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]$')  
}
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
Member: Oreus1
Oreus1 Mar 19, 2018 at 14:08:39 (UTC)
Goto Top
Dass der Notepad++ sowas kann, hatte ich nicht auf dem Radar...
Vielen Dank für den Hinweis.