web-dev-qa-db-fra.com

Existe-t-il un utilitaire de ligne de commande Windows permettant de répertorier les fichiers les plus volumineux dépassant une taille spécifique dans des sous-répertoires?

Voudrait pouvoir trouver dans une arborescence de répertoires des chemins d'accès complets dépassant une taille spécifique (par exemple, 10 Mo).

Connaît actuellement Microsoft Diruse (élément de Windows XP Outils de support du Service Pack 2 ) qui fait ce que je veux sauf que ne répertorie que les tailles de répertoires plutôt que les fichiers.

17
Umber Ferrule
forfiles /P D:\ /M *.* /S /D +"01/17/2012"  /C "cmd /c if @fsize gtr 209715200 echo @path @fsize @fdate @ftime"

analysera D:\et ses sous-répertoires, recherchera tous les fichiers dont la date de dernière modification est supérieure à "17-JAN-2012" et dont la taille est supérieure ou égale à 200 Mo, puis imprimera leurs détails.

forfiles est inclus sur certains serveurs Windows, mais pas par défaut sous Windows XP. Vous pouvez l'extraire du téléchargement du "Kit de ressources Windows Server 2003" à l'adresse http://www.Microsoft.com/download/en/details.aspx?id=17657 (bien qu’il soit écrit sous Windows Server, il fonctionne sous Win XP sans problèmes).

27
learnScrapy

Cela ressemble à un travail pour PowerShell

get-childitem

Accédez au répertoire en question, vérifiez les propriétés avec:

get-childitem | get-member

length et FullName semblent intéressants, par exemple:

get-childitem |ft fullname, length -auto

Une fois que vous maîtrisez les bases, essayez de filtrer avec une instruction where.

get-childitem | where-object {$_.length -gt 10000} |ft fullname, length -auto

Expérimentez avec 100000

6
Guy Thomas

Le port des utilitaires Linux sur UnxUtils contient la commande Linux find .

Vous devez renommer find.exe en quelque chose d'autre, par exemple xfind.exe, car find est une fonction intégrée à l'invite de commande Windows. Vous pouvez alors trouver tous les fichiers plus volumineux puis 1000000 by:

répertoire xfind -size +1000000 -print

Voici la documentation pour la commande Linux find , mais je ne sais pas exactement comment cela a été implémenté dans UnxUtils et pour quelle version de find.

3
harrymc

Prenez Command Console LE (que je recommande beaucoup récemment), remplacement gratuit de cmd. .exe avec beaucoup de fonctionnalités supplémentaires, a une commande pour cela: PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s signifie récursivement, exécutez la commande à partir du répertoire dans lequel vous souhaitez effectuer la recherche.
  • /(fpn z) est le format d'affichage des résultats, ici: fullpathfullname size
  • /[s10485760,] signifie taille = 10 Mo ou plus
2
Snark

Je crois que l'utilisation de cette solution est plus précise avec la description:

Téléchargez l'exécutable en ligne de commande sfk.exe à l'adresse http://sourceforge.net/projects/swissfileknife/files/

Utilisez-le comme ça

skf.exe list -big

Exemple de sortie (abrégé):

[listing 50 of 78 files by size:]
        3951 mens\noname_30.mht
        3996 mens\noname_14.mht
        3996 mens\noname_25.mht
        4060 mens\noname_24.mht
        4263 mens\noname_31.mht
        4701 mens\noname_1.mht
       14568 Thumbnail Restore.Zip
       45056 netmeter.exe
     [...]
     12337752 rktools.exe
     16826024 sp35378.exe
     16926496 jre-6u30-windows-i586.exe
     19480227 SugarCE-6.2.4.Zip
     21073936 vlc-1.1.11-win32.exe
     22083184 EasyPHP-5.3.8.1-setup.exe
     25517642 MPSOFTWARE.phpDesigner.v8.0.0.145-CRD.rar
     31085033 phpdesigner8usb.Zip
     48835640 netbeans 7.exe
     58900704 ZendServer-CE-php-5.2.17-5.6.0-Windows_x86.exe    
     491538432 53400105.iso

Si vous ne voulez que les 10 plus gros fichiers, utilisez:

skf.exe list -big=10

Vous pouvez le personnaliser en suivant les instructions suivantes: http://stahlworks.com/dev/index.php?tool=list

1
vicenteherrera

La commande de recherche de utilitaires cygwin effectue cette opération. Pour votre condition

trouver les chemins complets des fichiers dans une arborescence de répertoires dépassant une taille spécifique (disons 10 Mo).

cela donne le résultat:

find -size + 10M -type f -printf "% p% s\n"

-size +10M vous donne des "objets" plus grands que 10 mégaoctets

-type f vous donne uniquement des fichiers

-printf affiche les fichiers trouvés, %p est le chemin, %s est la taille (en octets) et \n est la nouvelle ligne.

1
Gerd Klima

Je viens de tomber sur l'outil en ligne de commande, Disksum , qui semble similaire à diruse , mais donne deux formes de sortie:

  • trié par nombre de fichiers par répertoire (croissant)
  • trié par taille de répertoire (croissant)
1
Umber Ferrule