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

17

Voudrait pouvoir trouver des chemins d'accès complets de fichiers dans une arborescence de répertoires qui dépassent une taille spécifique (disons 10 Mo).

Actuellement au courant de Diruse de Microsoft (qui fait partie des outils de support de Windows XP Service Pack 2 ) qui fait ce que je veux, sauf qu'il ne répertorie que les tailles de répertoire plutôt que les fichiers.

Virole d'ombre
la source

Réponses:

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

va scanner D: \ et ses sous-répertoires, rechercher tous les fichiers dont les dernières dates modifiées sont supérieures à "17-JAN-2012" et dont les tailles sont supérieures ou égales à 200 Mo, puis imprimer leurs détails.

forfiles est inclus sur certains serveurs Windows, mais pas par défaut sur 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 dit pour Windows Server, il s'exécute sur Win XP sans problème).

learnScrapy
la source
Superbe - cela a fait ce que je voulais (dès que j'ai fixé la date pour le Royaume-Uni le 17/01/2012). Merci.
Umber Ferrule
6

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

Guy Thomas
la source
Utilisez Get-ChildItem -recurse pour effectuer une recherche récursive
themadmax
3

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 dans l'invite de commandes Windows. Vous pouvez ensuite trouver tous les fichiers de taille supérieure à 1000000 octets par:

répertoire xfind -size +1000000 -print

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

harrymc
la source
je crois que GnuWin32 est plus à jour: gnuwin32.sourceforge.net ... en plus il y a toujours Cygwin: cygwin.com
quack quixote
@ ~ quack: Vous avez raison, seulement que le paquet FileUtils dans GnuWin32 semble assez complexe à installer, nécessitant pas mal de fichiers.
harrymc
C'est suffisant. je suis un utilisateur de cygwin, personnellement. et j'ai tendance à préférer la mise à jour à la simplicité d'installation. mais merci d'avoir expliqué votre raisonnement.
Quack Quichotte
2

Prenez Command Console LE (que je recommande beaucoup récemment), un 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 que vous souhaitez rechercher.
  • /(fpn z) est le format d'affichage des résultats, ici: fullpathfullname size
  • /[s10485760,] signifie taille = 10 Mo ou plus
Snark
la source
1

La commande find des utilitaires cygwin le fait. Pour votre condition

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

cela donne le résultat:

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

-size +10Mvous donne des "objets" de plus de 10 mégaoctets

-type f vous donne uniquement des fichiers

-printfimprime les fichiers trouvés, %pest le chemin, %sest la taille (en octets) et \nest la nouvelle ligne.

Gerd Klima
la source
1

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

  • trié par nombre de fichiers par répertoire (croissant)
  • trié par taille de répertoire (croissant)
Virole d'ombre
la source
1

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

Téléchargez l'exécutable de ligne de commande sfk.exe sur 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 fichiers les plus gros, utilisez:

skf.exe list -big=10

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

vicenteherrera
la source
Magnifique réponse, je l'ai référencée ici; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky
-2

Je sais que la question porte sur la ligne de commande, mais cette question revient sans cesse dans Google, donc en ajoutant un autre moyen simple - via Explorer.

  1. ouvrez l'emplacement (un disque ou un dossier) où vous souhaitez rechercher des fichiers volumineux dans l'Explorateur Windows
  2. dans le champ de recherche en haut à droite, tapez "taille: gigantesque" (le champ suggérera automatiquement la syntaxe et d'autres options possibles)
jitbit
la source
La question recherchait des réponses en ligne de commande.
john
Ceci est une bonne réponse et valable. Il ne devrait pas être rétrogradé.
zar