windows, sed, grep - suchen und ersetzen in dateien batch im verzeichnis rekursiv
Hallo Leute,
Ich benötige euere unterstützung.
Ich muß in einigen *.ini Dateien nach bestimmten wörtern suchen und die *.ini Dateien liegen alle in verschachtelten verzeichnissen.
Das suchen und erstezen will ich in einerm BATCH erledigen das es auf ca. 50 Computern gemacht werden muß ;-(
Das ganze sind windows rechner.
Habt ihr eine Idee wie ich es mit Board mitteln am windows rechner machen kann, habe auch versucht mit sed und grep zu machen.
habe versucht mit sed und grep aber kein erfolg.
grep:
damit bekomme ich schonmal den pfad der dateien:
sed:
hiermit bekomme ich wenn ich im verzeichnis der datei bin die richtige zeiler ausgegeben:
habe es versucht mit einer for schleife:
oder mit einer kombination von GREP und SED:
nur bekomme ich keine ausgabe.
wie könnte ich sowas "einfach" lösen????
hoffe mir kann jemand helfen.
Ich benötige euere unterstützung.
Ich muß in einigen *.ini Dateien nach bestimmten wörtern suchen und die *.ini Dateien liegen alle in verschachtelten verzeichnissen.
Das suchen und erstezen will ich in einerm BATCH erledigen das es auf ca. 50 Computern gemacht werden muß ;-(
Das ganze sind windows rechner.
Habt ihr eine Idee wie ich es mit Board mitteln am windows rechner machen kann, habe auch versucht mit sed und grep zu machen.
habe versucht mit sed und grep aber kein erfolg.
grep:
damit bekomme ich schonmal den pfad der dateien:
1
grep -r -l FileMax= *
sed:
hiermit bekomme ich wenn ich im verzeichnis der datei bin die richtige zeiler ausgegeben:
1
sed -n "/40000/p" *.ini
habe es versucht mit einer for schleife:
1
for /R %cd% %f in (*.ini) do sed -n "/40000/p %f
oder mit einer kombination von GREP und SED:
1
grep -r -l FileMax= B* | sed -n "/FileMax=/p"
nur bekomme ich keine ausgabe.
wie könnte ich sowas "einfach" lösen????
hoffe mir kann jemand helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114184
Url: https://administrator.de/forum/windows-sed-grep-suchen-und-ersetzen-in-dateien-batch-im-verzeichnis-rekursiv-114184.html
Ausgedruckt am: 15.04.2025 um 12:04 Uhr
4 Kommentare
Neuester Kommentar
Moin micneu,
ich bin noch etwas unsicher, ob Du
Also: Kompromissangebot.
Wenn Du vom CMD-Prompt aus mit einer Kombination von FOR /R und Sed diese FileMax-Einträge ersetzen willst, dann
Ungetestet, aber soll gemäß Plan bewirken
--> und zwar switche/ersetze alle Strings "FileMax=beliebige Zeichen" durch "FileMax=1234
-->und zwar in allen Dateien "%f", die ich in Hochkomma gesetzt habe, falls Leerzeichen in Pfad oder Dateinamen sind.
Falls Du mehrere (verschiedene) Zeilen ersetzen willst, dann solltest Du die ganzen einzelnen AlteZeile/NeueZeile-Anweisungen in eine separate Textdatei schreiben und sed mit Parameter -f Textdateiaufrufen.
Grüße
Biber
ich bin noch etwas unsicher, ob Du
- Dich im Moment auf das Suchen der relevanten beschränken willst
- oder tatsächlich bestimmte Zeilen ersetzen willst
- und falls ja, ob Du das per Cmd-Prompt oder per Batch abfackeln willst.
Also: Kompromissangebot.
Wenn Du vom CMD-Prompt aus mit einer Kombination von FOR /R und Sed diese FileMax-Einträge ersetzen willst, dann
1
FOR /R . %f in (*.ini) do Sed -e 's/FileMax=.*/FileMax=1234/g' "%f"
FOR /R . %f in (*.ini) do
---> Allen *.ini-Dateien, im folgenden %f genannt, unterhalb des aktuellen Verzeichnisses, tue folgendes anSed -e 's/FileMax=.*/FileMax=1234/g' "%f"
--> -e editiere--> und zwar switche/ersetze alle Strings "FileMax=beliebige Zeichen" durch "FileMax=1234
-->und zwar in allen Dateien "%f", die ich in Hochkomma gesetzt habe, falls Leerzeichen in Pfad oder Dateinamen sind.
Falls Du mehrere (verschiedene) Zeilen ersetzen willst, dann solltest Du die ganzen einzelnen AlteZeile/NeueZeile-Anweisungen in eine separate Textdatei schreiben und sed mit Parameter -f Textdateiaufrufen.
Grüße
Biber