Una situación recurrente es encontrarnos con falta de espacio en disco, con Powershell podemos rápidamente localizar aquellos archivos más grandes, filtrando la búsqueda con los criterios que deseemos y solucionar el problema rápidamente sin tener que buscar o instalar soluciones de terceros para localizar estos archivos.

powershell getchilditem

 

Cmdlet Get-ChildItem

Para esta tarea usaremos el cmdlet Get-ChildItem, con el siguiente comando por ejemplo

Get-ChildItem -r | sort -descending -property length | select -first 10 FullName, length

Como vemos hemos lanzado el cmdlet primero con la opción “-r” equivalente a “-recurse”, de esta manera le indicamos que busque en el directorio actual y en todos los de dentro. Una vez esto, el resultado los ordenamos de forma descendente en base a su tamaño y a su vez filtramos de nuevo el resultado mostrando únicamente el nombre (conteniendo la ruta) y tamaño de los 10 primeros.

A partir de aquí en los que tenemos un output bastante limpio de los resultados, podríamos incluir todo tipo de filtrado, por ejemplo para buscar por extensión de fichero como por ejemplo sería para .zip y .rar el siguiente comando:

Get-ChildItem -r *.zip,*.rar | sort -descending -property length | select -first 10 FullName, length

En el que hemos visto como podemos incluir diveras condiciones con solo usar como separador la coma. De la misma manera podemos indicar exclusiones, en el siguiente ejemplo buscamos de modo general pero excluimos tanto los .zip, como los .rar o ficheros que incluyan en su nombre *backup*

Get-ChildItem -r -exclude *.zip,*.rar,*backup* | sort -descending -property length | select -first 10 FullName, length

Como siempre en este momento entra en juego vuestra curiosidad y lo trabajados que queráis dejar los scripts, como otro ejemplo, el resultado lo hemos estado viendo en bytes, pero lo podemos mostrar en gigas para que sea más claro formateando el valor del tamaño con una sencilla operación matemática redondeando el resultado.

Get-ChildItem -r *.zip | sort -descending -property length | select -first 10 FullName, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 3)}}

Fuente Microsoft