如何查找目录结构中的10个最大文件
试试这个脚本
gci -re -in * |
?{ -not $_.PSIsContainer } |
sort Length -descending |
select -first 10
击穿:
的过滤块 “?{ -not $_.PSIsContainer }
” 指的是过滤掉的目录。排序命令将按降序排列所有剩余的条目。 SELECT子句将只允许前10个通过,因此将成为最大的10
这可以简化一点,因为目录没有长度:
gci . -r | sort Length -desc | select fullname -f 10
+1我将来会使用它(少打字)。 – 2009-05-02 01:38:42
加'。'甚至不需要。由于默认路径是当前目录,因此可以将前面部分简化为“gci -r | ...”。 – 2009-05-02 06:02:30
如果你关心了一下结果集的格式,这里有更好看的输出两个功能:
#Function to get the largest N files on a specific computer's 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
}
似乎它不回答原来的问题。 – 2014-03-14 13:06:17
我已经blogged about a similar problem,我想找到一个目录中的最大文件和所有子目录:在一个不错的易于理解的格式(整个C盘为例),以及名单大小(GB ,MB和KB)。这里的PowerShell的功能我用列出所有文件在一个不错的出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调用。
基本一个获得前10名最大的文件到本地目录:
LS -S -l |头-n 10
,或者您可以使用
杜-a /家/ directory | sort -n -r | head -n 10
这太好了----我想出了如何使用format-table格式化最终结果,但是我没有清楚的是语法?{}和$ _我猜这些是一些语句结构的缩写? – 2009-04-28 14:20:26
?{}语法是where-obj的简写这是一个过滤器表达式。本质上,PowerShell会将每个对象都传递给$ _中的?{}子句。如果返回值为$ true,则该对象将继续沿着管道向下,否则将被过滤掉。 – JaredPar 2009-04-28 14:28:13
这是内存密集型的命令,并且我猜想正在搜索内容的大小。 – Ankush 2012-06-11 10:56:39