Cómo encontrar archivos grandes en su computadora usando PowerShell
Cuando el sistema le advierte que se está acabando el espacio libre en su disco local, lo primero que hace el administrador es tratar de encontrar todos los archivos grandes que ocupan mucho espacio. Para buscar nuevos archivos, puede usar Windows Explorer (hay varias plantillas predefinidas de búsqueda por tamaño), su administrador de archivos favorito o herramientas de terceros. Sin embargo, a diferencia de PowerShell, todas estas herramientas requieren instalación. Consideremos el ejemplo de la búsqueda rápida de archivos grandes en la unidad de su computadora local usando PowerShell.
Puede usar el cmdlet Get-ChildItem para enumerar los archivos en un directorio específico (incluidas las subcarpetas) y sus tamaños. El cmdlet puede buscar archivos en todo el disco o en una carpeta específica (por ejemplo, en perfiles de usuario y cualquier otra carpeta).
Hagamos una lista de los 10 archivos más grandes en el disco C:\:
Get-ChildItem c:\ -r| sort -descending -property length | select -first 10 name, LengthSegún el tamaño del disco y la cantidad de archivos que contiene, puede llevar algún tiempo completar el comando.
La tecla -r (Recurse) significa que todas las subcarpetas se buscarán recursivamente. Puede restringir la comprobación a un determinado nivel de profundidad utilizando el parámetro -Depth. Si no especifica la ruta, se buscarán todas las subcarpetas del directorio actual.
Como puede ver, tenemos la lista de los diez archivos más grandes en el disco ordenados en orden descendente.
Consejo. Al acceder a algunos directorios incluso con privilegios de administrador, el cmdlet Get-ChildItem puede devolver un error de acceso denegado:
Get-ChildItem : Access to the path 'C:\Windows\CSC' is denied.
At line:1 char:1
+ Get-ChildItem c:\ -r| sort -descending -property length | select -fir ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommandPara suprimir dichos errores, utilice el -ErrorAction SilentlyContinueparámetro.
Utilice la opción -Force para mostrar los archivos ocultos y del sistema a los que no puede acceder el usuario.
Como puede ver, el tamaño del archivo se muestra en bytes. Para mayor comodidad, se pueden convertir en megabytes. También puede mostrar la carpeta en la que se almacena el archivo encontrado:
Get-ChildItem c:\ -r -ErrorAction SilentlyContinue -Force |sort -descending -property length | select -first 10 name, DirectoryName, @{Name="MB";Expression={[Math]::round($_.length / 1MB, 2)}}La tabla resultante se puede convertir en una tabla gráfica conveniente usando el cmdlet Out-GridView:
Get-ChildItem c:\ -r|sort -descending -property length | select -first 10 name, DirectoryName, @{Name="MB";Expression={[Math]::round($_.length / 1MB, 2)}} | Out-GridView
Del mismo modo, puede encontrar todos los archivos que superan cierto tamaño, por ejemplo, 500 MB:
$size=500*1024*1024
GCi C:\ -recurse -ErrorAction SilentlyContinue -Force | where-object {$_.length -gt $size} | Sort-Object length | ft fullnamePuede exportar la lista de archivos a un archivo CSV de la siguiente manera:
GCi C:\ -recurse | where-object {$_.length -gt $size} | Sort-Object length | ft fullname | Export-Csv c:\pc\LargeFiles_Report.csvSi necesita calcular el tamaño de todos los archivos en un directorio específico, lea el artículo Cálculo del tamaño de carpeta con PowerShell.



