Mit Powershell große Dateien durchsuchen
Hallo zusammen,
entweder suche ich falsch, oder die Frage wurde so noch nicht gestellt...
Ich muss in mehreren 100.000en von csv-Dateien (einige viele > 100 MB, in Summe sind es 100 GB) nach mehreren 1000 Nummern suchen. Mit meinem Powershell-Skript bin ich mit kleinen Test-Mengen gut gefahren, aber bei der gesamten Menge bin ich mir nicht sicher, ob das so zielführend ist, was ich da mache.
Der relevante Code-Teil sieht so aus:
Es reicht völlig, die Fundstellen in eine Text-Datei zu schreiben, denn es werden wahrscheinlich nicht mehr als 1000 werden.
Auf diese Art und Weise konnten in den letzten 24 Stunden gerade mal 9 GB abgearbeitet werden. Wenn das nun eine einmalige Sache wäre, würde ich sagen, ich lass es dabei und warte einfach, aber es kann sein, dass das künftig öfter mal gemacht werden muss (fragt bitte nicht, warum mit so "hemdsärmeligen Mitteln" solche Datenmassen durchsucht werden müssen - es ist nun mal so).
Ich sollte noch dazu sagen, dass ich weder Entwicklerin noch SysAdmin bin, sondern eher jemand mit ein paar grundlegenden Programmierkenntnissen, aber wohl die einzige in dem Laden, die überhaupt "so weit" kommt. Daher meine Frage, könnt ihr mir einen performanteren Weg empfehlen? Wäre Python dafür vielleicht besser geeignet? Ich höre nur immer, wie toll Python sein soll, aber habe noch 0 Erfahrung damit und gerade keine Zeit, Zeit in eine Sprache zu investieren, die am Ende nicht zur Lösung meines Problems beitragen kann.
Vielen Dank vorab und viele Grüße
banzai123
entweder suche ich falsch, oder die Frage wurde so noch nicht gestellt...
Ich muss in mehreren 100.000en von csv-Dateien (einige viele > 100 MB, in Summe sind es 100 GB) nach mehreren 1000 Nummern suchen. Mit meinem Powershell-Skript bin ich mit kleinen Test-Mengen gut gefahren, aber bei der gesamten Menge bin ich mir nicht sicher, ob das so zielführend ist, was ich da mache.
Der relevante Code-Teil sieht so aus:
foreach($file in $files) {
foreach($nr in $nummern) {
$ergebnis = select-string $file -pattern -$nr - list | select-object -expandproperty path
if($ergebnis) {
$ergebnis >> ergebnisdatei.txt
}
}
}
Es reicht völlig, die Fundstellen in eine Text-Datei zu schreiben, denn es werden wahrscheinlich nicht mehr als 1000 werden.
Auf diese Art und Weise konnten in den letzten 24 Stunden gerade mal 9 GB abgearbeitet werden. Wenn das nun eine einmalige Sache wäre, würde ich sagen, ich lass es dabei und warte einfach, aber es kann sein, dass das künftig öfter mal gemacht werden muss (fragt bitte nicht, warum mit so "hemdsärmeligen Mitteln" solche Datenmassen durchsucht werden müssen - es ist nun mal so).
Ich sollte noch dazu sagen, dass ich weder Entwicklerin noch SysAdmin bin, sondern eher jemand mit ein paar grundlegenden Programmierkenntnissen, aber wohl die einzige in dem Laden, die überhaupt "so weit" kommt. Daher meine Frage, könnt ihr mir einen performanteren Weg empfehlen? Wäre Python dafür vielleicht besser geeignet? Ich höre nur immer, wie toll Python sein soll, aber habe noch 0 Erfahrung damit und gerade keine Zeit, Zeit in eine Sprache zu investieren, die am Ende nicht zur Lösung meines Problems beitragen kann.
Vielen Dank vorab und viele Grüße
banzai123
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 600807
Url: https://administrator.de/forum/mit-powershell-grosse-dateien-durchsuchen-600807.html
Ausgedruckt am: 04.05.2025 um 20:05 Uhr
2 Kommentare
Neuester Kommentar

Deine Abfrage lässt sich noch um einiges optimieren, so ist nur ein einziger Select-String Aufruf pro Datei nötig
Sind alle Dateien in einem einzigen Ordner und nicht in Unterordnern verachachtelt dann geht auch
$ordner = "d:\Ordner"
$nummern = "123","456","789"
ls $ordner -File -Recurse -Filter *.csv | select-string -Pattern $nummern -SimpleMatch -List | select -Expand Path | out-file result.txt
$ordner = "d:\Ordner"
$nummern = "123","456","789"
select-string -Path "$ordner\*.csv" -Pattern $nummern -SimpleMatch -List | select -Expand Path | out-file result.txt