Get-ChildItem

Listuje zawartość katalogu, klucza rejestru lub innej lokalizacji.

Get-ChildItem to powershellowy odpowiednik tego, co w cmd robi dir, a w Linuksie ls — tylko mocniejszy. Listuje zawartość lokalizacji: katalogu na dysku, ale też kluczy rejestru, zmiennych środowiskowych czy certyfikatów, bo w PowerShellu wszystko jest „dostawcą” (provider). W praktyce 99% czasu używasz go do przeglądania plików i folderów. Ma dwa aliasy, które na pewno spotkasz: gci oraz, dla wygody migrujących, ls i dir.

Składnia i najważniejsze opcje

Podstawowa forma wygląda tak: Get-ChildItem [[-Path] ] [-Filter ] [-Recurse] [-File] [-Directory]

  • -Path — lokalizacja do wylistowania. Pozycyjny, więc możesz go pominąć i podać samą ścieżkę. Bez niego bierze bieżący katalog.
  • -Filter — filtr po stronie dostawcy, szybki, ale obsługuje tylko proste wieloznaczniki (*.log). Działa najwydajniej przy -Recurse.
  • -Recurse — schodzi do podkatalogów, rekurencyjnie. Bez tego widzisz tylko jeden poziom.
  • -Depth — ogranicza głębokość rekurencji (np. -Depth 2), żeby nie zalać się całym drzewem.
  • -File — pokazuje wyłącznie pliki, pomija foldery.
  • -Directory — odwrotnie: tylko katalogi.
  • -Force — dorzuca elementy ukryte i systemowe, które normalnie są pomijane.
  • -Include / -Exclude — bardziej elastyczne dopasowanie po nazwie; -Include wymaga zwykle -Recurse albo ścieżki kończącej się \*.

Przykłady użycia

  • Get-ChildItem — listuje bieżący katalog, jeden poziom w głąb.
  • Get-ChildItem C:\Logs -Filter *.log -Recurse — znajduje wszystkie pliki .log w katalogu i podkatalogach.
  • Get-ChildItem -Directory — pokazuje same foldery, bez plików.
  • Get-ChildItem -Recurse -File | Measure-Object -Property Length -Sum — liczy łączny rozmiar wszystkich plików w drzewie.
  • Get-ChildItem Env: — listuje zmienne środowiskowe, bo to też „katalog” w świecie providerów.

Częste błędy i pułapki

Mylenie -Filter z -Include. -Filter jest szybszy, ale przyjmuje tylko jeden wzorzec i prymitywne wieloznaczniki. -Include bierze listę i bogatsze wzorce, lecz bez -Recurse lub \* na końcu ścieżki potrafi nie zwrócić nic — klasyczna zagadka „czemu pusto”.

Ukryte pliki znikają. Jeśli czegoś nie widzisz, dorzuć -Force. Bez niego elementy z atrybutem Hidden/System są niewidzialne, a Ty główkujesz, gdzie podział się plik.

Alias ls to nie Bash. W PowerShellu ls -la wywali błąd, bo -la nie jest flagą tej komendy. Przyzwyczajenia z Linuksa tu nie zadziałają.

Rekurencja po całym dysku bez -Depth i bez filtra potrafi mielić minutami i sypać błędami dostępu — ogranicz zakres.

Powiązane komendy: Set-Location (zmiana katalogu), Get-Item (pojedynczy element), Where-Object i Measure-Object (filtrowanie i podsumowania w potoku), oraz aliasy dir i ls.