Textdateien mit Powershell nach mehreren Wörtern durchsuchen
Hallo zusammen,
ich möchte auf einem Laufwerk alle Textdateien (< 1MB) nach bestimmten Wörtern durchsuchen.
Die zu suchenden Wörter (ca. 100 Stk.) stehen in der Datei "Suche.txt".
Sobald in einer Textdatei mindestens 10 der zu suchenden Wörter drin vorkommen, soll diese Datei über die Konsole ausgegegeben werden. Dateien mit weniger Treffen sollen ignoriert werden.
Bis jetzt habe ich mit meinen überschaubaren Kenntnissen das hier "gebastelt". Auf Laufwerke C:\ werden alle .txt nach dem Wort "admin" durchsucht. In der Konsole werden dann die einzelnen Treffer in den Dateien angezeigt.
Mir fehlt jetzt noch das "Zählen" der Treffer je Textdatei und das Laden der Suche.txt als Suchwörter.
Über alle Tipps bin ich dankbar.
ich möchte auf einem Laufwerk alle Textdateien (< 1MB) nach bestimmten Wörtern durchsuchen.
Die zu suchenden Wörter (ca. 100 Stk.) stehen in der Datei "Suche.txt".
Sobald in einer Textdatei mindestens 10 der zu suchenden Wörter drin vorkommen, soll diese Datei über die Konsole ausgegegeben werden. Dateien mit weniger Treffen sollen ignoriert werden.
Bis jetzt habe ich mit meinen überschaubaren Kenntnissen das hier "gebastelt". Auf Laufwerke C:\ werden alle .txt nach dem Wort "admin" durchsucht. In der Konsole werden dann die einzelnen Treffer in den Dateien angezeigt.
Mir fehlt jetzt noch das "Zählen" der Treffer je Textdatei und das Laden der Suche.txt als Suchwörter.
Über alle Tipps bin ich dankbar.
$FileFilter = '*.txt'
Get-ChildItem "C:\" -Include $FileFilter -Recurse | ? { $_.Length -lt 1MB } | Select-String -AllMatches 'admin' | select Filename, Linenumber
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4893296383
Url: https://administrator.de/contentid/4893296383
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Moin.
Gruß S.
$FileFilter = '*.txt'
$searchwords = Get-Content 'D:\suche.txt'
Get-ChildItem "C:\" -Include $FileFilter -Recurse -EA SilentlyContinue | ?{$_.Length -lt 1MB} | Select-String -SimpleMatch -AllMatches -Pattern $searchwords | group Path | ? Count -gt 10 | select Count,Name,@{n='Lines';e={$_.Group.LineNumber -join ','}}
Gruß S.
Zitat von @Hatschi1:
Danke Schlepper, funktioniert super!!
Wie bekomme ich das Argument "Treffer > 10" noch reingebastelt?
Ist jetzt eingebaut hatte ich überlesen. Ein einfach dazwischen geschaltetes Where Object macht das gewünschte.Danke Schlepper, funktioniert super!!
Wie bekomme ich das Argument "Treffer > 10" noch reingebastelt?
Done. s.o.