PowerShell 3+

PowerShell 3+

我的 Windows 7 搜索在一台电脑上非常慢,而在另一台电脑上却很快。我发现一台电脑索引了 90,000 个文件,而另一台电脑索引了 150 万个文件。

因此,我想按文件数量找到最大的文件夹,因为有些文件夹肯定是不相关的,并将其排除。

我有工具可以根据数据大小查找最大的文件夹,但不能根据文件夹内的文件数量查找。有什么想法吗?

答案1

如果你使用的是 Windows XP,则可以使用文件夹大小shell-extension 为您提供了一些可添加到 Explorer 的列,以显示文件夹的大小,以及其中包含的文件/文件夹/两者的数量,从而允许您在 Explorer 中查看和排序它们。

不幸的是,Vista 及更高版本已经放弃了文件夹大小和类似程序使用的 API 功能,因此它们不再起作用。

相反,您必须使用非 shell 扩展。幸运的是,有几种程序可以很好地可视化文件系统上的空间使用情况。

它们大多数都有几种不同的模式,包括文本列表/树(如在资源管理器中),饼状图, 和树形图,其中文件和子目录用正方形或长方形表示。除了大小之外,还应该有一个选项可以显示文件/文件夹的数量,通常以文本列表/树模式显示。有时,要获取文件/文件夹的数量,您需要选择文件夹并查看其属性(这不太方便,但仍然比在 Explorer 中手动操作更容易)。

以下是一些最受欢迎的软件(一些是免费软件,其他是共享软件):

答案2

另外,TreeSize 免费(在此镜头中,目录名为 0-F。)

在此处输入图片描述

答案3

按文件数量(包括子文件夹)获取排序的文件夹列表的一种快速方法是:

PowerShell 3+

$a=@{}
Get-ChildItem -LiteralPath 'D:\' -Recurse -Directory -ErrorAction Ignore | Foreach {
    $a[$_.Fullname] = (Get-ChildItem -LiteralPath $_.Fullname -Recurse -File -ErrorAction Ignore).Count
} 
$a.GetEnumerator() | Sort Value -Descending | Format-List

示例输出

在此处输入图片描述

对于那些对其工作原理感兴趣的人

  • Get-ChildItem -LiteralPath 'D:\' -Recurse -Directory循环遍历给定目录的所有子文件夹。根据需要更改路径。(-LiteralPath避免[]括号引起的错误。
  • 在每个子文件夹中用于(Get-ChildItem -LiteralPath $_.Fullname -Recurse -File).Count计算文件数(包括子文件夹中的文件)。文件夹本身不计算在内。只有文件才计算在内。
  • $a[$_.Fullname] = myValue对于每个子文件夹,添加一个以当前目录为名称的新哈希表条目。作为值添加我们之前提到的文件数
  • 完成所有工作后,使用$a.GetEnumerator()将哈希表分解为多个项目,并将它们传递给Sort-Object按值对哈希表进行升序排序的命令

答案4

从尘埃开始4e1180e5(2020-08-30),您现在可以这样做:

-f, --filecount
Directory 'size' is number of child files/dirs not disk size

示例输出:

PS C:\Users\Steven\AppData\Local> dust -f
577            ┌── Default
628          ┌─┴ User Data
629        ┌─┴ Edge
1,154    ┌─┴ Microsoft
1,901    ├── Packages
407      │     ┌── 41ad6w4a.default-release-4
493      │     │   ┌── entries
497      │     │ ┌─┴ cache2
573      │     ├─┴ 7eccqsn1.default-release-1-1597857941226
3,952    │   ┌─┴ Profiles
3,953    │ ┌─┴ Firefox
3,954    ├─┴ Mozilla
3,096    │       ┌── entries
3,100    │     ┌─┴ cache2
3,269    │   ┌─┴ 56uzf1ra.Sunday
10,341   │   │   ┌── entries
10,344   │   │ ┌─┴ cache2
10,428   │   ├─┴ 7nx7hnxa.68-edition-default
13,698   │ ┌─┴ Profiles
13,699   ├─┴ Waterfox
21,181 ┌─┴ .

由于它刚刚发布,我必须使用以下命令自己构建它:

$env:RUSTFLAGS = '-C link-arg=-s'
cargo build --release

相关内容