OE PowerTool 4.5.5
Twój adres IP to: 18.97.9.168
Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/)
ls . -force -recurse | Where-Object {
$_.PSisContainer -eq $true
} | ForEach-Object {
Write-Progress 'Examining Folder' ($_.FullName); $_
} | ForEach-Object {
$result = '' | Select-Object Path, Count;
$result.Path = $_.FullName;
$result.Count = @($_ | ls -force -ea SilentlyContinue `
| where {$_.PSisContainer -eq $false}).length; $result
} | sort Count -descending |foreach{$_.Path;$_.Count}
Co tu się dzieje? Najpierw za pomocą ls -r pobieramy strukturę plików i katalogów z której zostawiamy tylko katalogi.
Dla każdego z nich rozpoczynamy od wyświetlenia jego nazwy za pomocą Write-Progress. Potem ze stringa $result tworzymy
sobie strukturę o polach Path i Count. Do Path zapisujemy aktualny katalog. W Count chcemy mieć ilość plików.
W tym celu znów odpalamy ls ale już nie rekurencyjnie. Dostajemy listę z której pobieramy jej długość i zapisujemy w Count.
Następnie zostaje posortowanie wyników malejąco i wyświetlenie nazwy każdego katalogu i liczby jego plików.
Znaczek @ jest konieczny ponieważ PowerShell automatycznie jednoelementowe tablice zmienia w pojedyncze
obiekty a taki pojedynczy obiekt nie ma właściwości Length. Znaczek ten po prostu rzutuje obiekt na tablicę.