web-dev-qa-db-fra.com

Utilisation de DU.EXE (Sysinternals) est-il possible de montrer des dossiers au-dessus d'une certaine taille?

du.exe Vous permet d'identifier récursivement les dossiers qui occupent une grande quantité d'espace. Par exemple, ce qui suit vous montrera la taille de tous les dossiers de c:\ 3-niveaux profond:

du.exe -l 3 c:\

Comment filtrer cette sortie pour me montrer que les dossiers supérieurs à 1 Go?

Voici un extrait de la sortie de du.exe pour référence:

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

   6,344,864  c:\Windows\winsxs
  18,268,671  c:\Windows
 483,343,308  c:\
Files:        412125
Directories:  42072
Size:         494,943,548,281 bytes
Size on disk: 487,560,269,896 bytes
6
Iain

Comme l'a dit l'autre réponse, vous ne pouvez pas le faire avec du.exe seul. PowerShell à la rescousse!

.\du.exe -c -l 3 C:\ | ConvertFrom-Csv -Header Size,Path | Where-Object { [int]$_.Size -gt 1048576 } | Sort-Object { [int]$_.Size } -descending

Explication

Briser cette longue commande dans les bits individuels qui sont chacun canalisée dans la suivante:

.\du.exe -c -l 3 C:\

C'est fondamentalement ce que vous avez commencé, sauf le -c Paramètre indique du pour formater la sortie en tant que CSV.

ConvertFrom-Csv -Header Size,Path

Cela prend la sortie CSV de du et la convertit en une hache PowerShell. Etant donné que du ne fournit pas d'en-tête avec des noms de colonne, cela doit être fait manuellement.

Where-Object { [int]$_.Size -gt 1048576 }

Cela filtre les données, qui ne renvoyant que ces lignes où la taille est supérieure à 1 Go (du renvoie des tailles dans KB et 1 Go = 1048576 KB). Noter la [int] Partie, à laisser PowerShell sache qu'il s'agit de données numériques.

Sort-Object { [int]$_.Size } -descending

Cela trie les données par taille, en ordre décroissant (spécifiant à nouveau que les données à trier sont numériques). Ceci est facultatif, bien sûr.

8
Indrek

Dans la dernière version DU.EXE Ajout d'un en-tête avec PowerShell ConvertFrom-CSV ne fonctionne pas hors de la boîte, car Du.exe ajoute à sa propre tête dans la liste. Ce que nous devons faire est de sélectionner l'en-tête existant avec la commande SELECT.

du.exe -c -l 3 C:\ | ConvertFrom-Csv | select Path,DirectorySize | Where-Object { [int]$_.DirectorySize -gt 1048576 }
4
Simon Katanski

Cette option n'est pas disponible avec du 1.4

Utilisation: DU [-C] [-L (niveaux) | -n | -v] [-u] [-q] (répertoire)

-c imprimer la sortie comme CSV.

-l Spécifiez la profondeur de l'information sous-répertoire (la valeur par défaut est tous les niveaux).

-n ne recueille pas.

-Q silence (pas de bannière).

-u compter chaque instance d'un fichier hardlinked.

-V Afficher la taille (en KB) de répertoires intermédiaires.

Donc, simplement utiliser DU ne peut pas limiter la sortie à quelque chose d'une taille spécifique.

1
Bon Gart