powershell - 基于特定扩展名的文件大小
问题描述
我正在尝试查找特定驱动器中在 40 天之前访问的所有文件,根据扩展名查找它们的文件类型和特定文件大小。我在 126 个文件夹中有 40000 个文件,总共有 51 种不同的扩展名(文件类型),现在我想找出什么类型的文件占用了多少空间。
有了这个,我得到了基于扩展名的文件数:
Get-ChildItem -Path X:\ -Recurse |where{-not $_.PSIsContainer} | group Extension -NoElement
有了这个,我得到了许多独特的扩展:
Get-ChildItem -Path X:\ -Recurse | Select-Object -Property Extension -Unique
Get-ChildItem -Path X:\ -Recurse |where{-not $_.PSIsContainer} | group Extension -NoElement
Get-ChildItem -Path X:\ -Recurse | Select-Object -Property Extension -Unique
解决方案
我希望它不是那么糟糕。:)
# directory path
$directory = "X:\"
# date -40 days
$date = (Get-Date).AddDays(-40)
# files which are accessed before 40 days
$files = Get-ChildItem $directory -Recurse -File:$true | Where-Object {$_.LastWriteTime -gt $date}
# file extensions
$fileExtensions = $files | Select-Object -Property Extension -Unique
foreach ($ext in $fileExtensions){
[int]$fileSize = $null
foreach ($file in $files) {
if ($file.Extension -like $ext.Extension) {
[int]$fileSize += $file.Length / 1KB
}
}
Write-Host "Extension:" $ext.Extension " - Size: "$fileSize "KB"
}
推荐阅读
- r - MongoDB - 从多个值对创建矩阵的文档结构
- react-native - “找不到 com.google.jimfs:jimfs:1.1”将 RN 项目升级到 AndroidX
- c# - 仅使用 HtmlAgilityPack 从 SelectNode 中获取一些内部文本
- python - 维护两个相同类型对象的优先级队列,每个队列具有不同的排序属性
- java - 杂货账单计划
- performance-testing - 斜坡和持有用户一段时间,然后再次斜坡
- python - 使用 Selenium Python 从 Chrome 获取 console.log 输出
- java - 构建 jar 文件但(dockerize)Spring Boot 应用程序启动
- networking - 在没有 yum(或任何其他软件包管理软件)的情况下在 RHEL 上安装 net-snmp
- ios - 为什么我不能在 Swift 中多次找到相同的关键字?