poniedziałek, 21 marca 2022

PowerShell: Przeszukiwanie plików w folderze (i ewentualnie podfolderach) pod kątem określonego ciągu znaków

Informacje wstępne

Poniżej wklejam prostą komendę w PowerShellu, która pozwoli przeszukać wszystkie pliki tekstowe w folderze pod kątem podanego ciągu znaków. 

Przydatne zwłaszcza kiedy w gąszczu logów trzeba znaleźć określoną frazę.

Komenda

Wersja przeszukująca wszystkie pliki w folderze

Get-ChildItem -File | ForEach-Object {Select-String -Path $_.FullName -Pattern 'daniel'}

Wersja z ograniczeniem przeszukiwania do plików *.txt

Get-ChildItem *.txt -File | ForEach-Object {Select-String -Path $_.FullName -Pattern 'daniel'}

Wersja z ograniczeniem przeszukiwania do plików *.txt i rekursywnym przeszukiwaniem podfolderów

Get-ChildItem *.txt -Recurse -File | ForEach-Object {Select-String -Path $_.FullName -Pattern 'daniel'}

Przykład działania

Do przeszukania poszły dwa pliki. Pierwszy ze słowami angielskimi, drugi z polskimi:

  • english_words_alpha.txt (link)
  • sjp.20220320.txt (link)
Obydwa znajdowały się w jednym folderze i chciałem w nich wyszukać wszelkie kombinacje mojego imienia, tj. "daniel". 

Użyłem komendy, która została podana powyżej, zaś poniżej screen przedstawiający rezultat obejmujący:
  • kolumna pierwsza: nazwa pliku,
  • kolumna druga: nr wiersza w którym ciąg został znaleziony,
  • kolumna trzecia: odnaleziony ciąg z wyróżnieniem szukanego tekstu.

Parsowanie plików w folderze pod kątem określonego ciągu
Wynik działania opisywanej komendy w PowerShellu

No i to w sumie tyle. Jedna linijka, a potrafi zaoszczędzić dużo czasu :)

Brak komentarzy:

Prześlij komentarz

Bardzo proszę o zachowanie netykiety.