Подтвердить что ты не робот

Как найти 10 самых больших файлов в структуре каталогов

Как найти 10 самых больших файлов в структуре каталогов?

4b9b3361

Ответ 1

Попробуйте script

gci -re -in * |
  ?{ -not $_.PSIsContainer } |
  sort Length -descending |
  select -first 10

Структура:

Блок фильтра "?{ -not $_.PSIsContainer }" предназначен для фильтрации каталогов. Команда sort будет сортировать все остальные записи по размеру в порядке убывания. Предложение select разрешает только первые 10, поэтому оно будет самым большим 10.

Ответ 2

Это можно упростить, потому что каталоги не имеют длины:

gci . -r | sort Length -desc | select fullname -f 10

Ответ 3

Я писал о подобной проблеме, где я хочу найти самые большие файлы в каталоге и все подкаталоги (весь C: диск, например), а также указать их размер в удобном для понимания формате (GB, MB и KB). Здесь функция PowerShell, которую я использую, перечисляет все файлы, отсортированные по размеру, в хорошем Out-GridView:

Get-ChildItem -Path 'C:\SomeFolder' -Recurse -Force -File 
        | Select-Object -Property FullName
             ,@{Name='SizeGB';Expression={$_.Length / 1GB}}
             ,@{Name='SizeMB';Expression={$_.Length / 1MB}}
             ,@{Name='SizeKB';Expression={$_.Length / 1KB}} 
        | Sort-Object { $_.SizeKB } -Descending 
        | Out-GridView

Вывод в GridView хорош, поскольку он позволяет легко фильтровать результаты и прокручивать их. Это более быстрая версия PowerShell v3, но сообщение в блоге также показывает более медленную версию, совместимую с PowerShell v2.

И, конечно, если вы хотите только 10 самых больших файлов, вы можете просто добавить параметр -First 10 к вызову Select-Object.

Ответ 4

В linux:

ls -XS | head -n 10

EDIT: О, теперь я вижу тег "powershell", извините за мой бесполезный ответ;)

Ответ 5

Если вам нужно немного форматирования результирующего набора, вот две функции с более приятными выводами:

#Function to get the largest N files on a specific computer drive
Function Get-LargestFilesOnDrive
{
Param([String]$ComputerName = $env:COMPUTERNAME,[Char]$Drive = 'C', [Int]$Top = 10)
Get-ChildItem -Path \\$ComputerName\$Drive$ -Recurse | Select-Object Name, @{Label='SizeMB'; Expression={"{0:N0}" -f ($_.Length/1MB)}} , DirectoryName,  Length | Sort-Object Length -Descending  | Select-Object Name, DirectoryName, SizeMB -First $Top | Format-Table -AutoSize -Wrap    
}

#Function to get the largest N files on a specific UNC path and its sub-paths
Function Get-LargestFilesOnPath
{
    Param([String]$Path = '.\', [Int]$Top = 10)
    Get-ChildItem -Path $Path -Recurse | Select-Object Name, @{Label='SizeMB'; Expression={"{0:N0}" -f ($_.Length/1MB)}} , DirectoryName,  Length | Sort-Object Length -Descending  | Select-Object Name, DirectoryName, SizeMB -First $Top | Format-Table -AutoSize -Wrap
}

Ответ 6

Основной, чтобы получить 10 самых больших файлов в локальном каталоге:

ls -S -l | head -n 10

или вы можете использовать

du -a/home/directory | sort -n -r | head -n 10