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.
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).
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
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.
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 plusJe 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
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.
Je viens de tomber sur l'outil en ligne de commande, Disksum , qui semble similaire à diruse , mais donne deux formes de sortie: