Esiste un'utilità della riga di comando di Windows per elencare i file più grandi che superano dimensioni specifiche nelle sottodirectory?


Risposte:


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

eseguirà la scansione di D: \ e delle sue sottodirectory, cercherà tutti i file le cui ultime date modificate sono superiori a "17-GEN-2012" e le cui dimensioni sono maggiori o uguali a 200 MB, quindi stampa i loro dettagli.

i forfile sono inclusi in alcuni server Windows, ma non per impostazione predefinita su Windows XP. È possibile estrarlo dal download del "Resource Kit di Windows Server 2003" all'indirizzo http://www.microsoft.com/download/en/details.aspx?id=17657 (anche se dice che è per Windows Server, funziona su Win XP senza problemi).


Superbo: questo ha fatto quello che volevo (non appena ho fissato la data per il Regno Unito il 17/01/2012). Grazie.
Umber Ferrule il

6

Sembra un lavoro per PowerShell

get-childitem

Passare alla directory in questione, controllare le proprietà con:

get-childitem | get-member

lunghezza e FullName sembrano interessanti, ad esempio:

get-childitem |ft fullname, length -auto

Dopo aver imparato le basi, prova a filtrare con un'istruzione where.

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

Sperimenta con 100000


Usa Get-ChildItem -recurse per effettuare ricerche ricorsive
themadmax

3

La porta delle utility Linux su UnxUtils contiene il comando find di Linux .

È necessario rinominare find.exe in qualcos'altro, ad esempio xfind.exe, poiché find è una funzione integrata nel prompt dei comandi di Windows. È quindi possibile trovare tutti i file di dimensioni superiori a 1000000 byte:

directory xfind -size +1000000 -print

Ecco il documento per il comando find di Linux , ma non so come sia stato implementato esattamente in UnxUtils e per quale versione di find.


credo che GnuWin32 sia più aggiornato: gnuwin32.sourceforge.net ... in più c'è sempre Cygwin: cygwin.com
quack quixote

@ ~ ciarlatano: hai ragione, solo che il pacchetto FileUtils in GnuWin32 sembra abbastanza complesso da installare e richiede parecchi file.
harrymc,

giusto. sono un utente cygwin, personalmente. e tendo a preferire l'aggiornamento rispetto al semplice da installare. ma grazie per aver spiegato il tuo ragionamento.
Quack Quixote

2

Prendi Command Console LE (che finisco per raccomandare molto di recente), una sostituzione gratuita per cmd.exe con molte funzionalità extra, ha un comando per questo:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s significa ricorsivamente, eseguire il comando dalla directory che si desidera cercare.
  • /(fpn z) è il formato per la visualizzazione dei risultati, qui: fullpathfullname size
  • /[s10485760,] significa dimensione = 10 MB o superiore

1

Il comando find delle utility cygwin fa questo. Per le vostre esigenze

trova percorsi completi di file in un albero di directory che superi una dimensione specifica (ad esempio 10 MB).

questo dà il risultato:

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

-size +10Mti dà "oggetti" più grandi di 10 megabyte

-type f ti dà solo file

-printfstampa i file trovati, %pè percorso, %sè dimensione (in byte) ed \nè la nuova riga.


1

Mi sono appena imbattuto nello strumento da riga di comando, Disksum , che sembra simile a diruse , ma offre due forme di output:

  • ordinati per numero di file per directory (crescente)
  • ordinati per dimensione della directory (crescente)

1

Credo che l'utilizzo di questa soluzione sia più accurato con la descrizione:

Scarica l'eseguibile della riga di comando sfk.exe da http://sourceforge.net/projects/swissfileknife/files/

Usalo in questo modo

skf.exe list -big

Esempio di output (abbreviato):

[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

Se vuoi solo i primi 10 file più grandi, usa:

skf.exe list -big=10

È possibile personalizzarlo ulteriormente seguendo le istruzioni da: http://stahlworks.com/dev/index.php?tool=list


Risposta meravigliosa, ho fatto riferimento qui; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky

-2

So che la domanda riguarda la riga di comando, ma questa domanda continua a emergere in Google, quindi aggiungendo un altro modo semplice: tramite Explorer.

  1. aprire il percorso (un disco o una cartella) in cui si desidera cercare file di grandi dimensioni in Esplora risorse
  2. nella casella di ricerca in alto a destra digitare "size: gigantic" (la casella suggerirà automaticamente la sintassi e altre possibili opzioni)

La domanda cercava risposte dalla riga di comando.
Giovanni,

Questa è una risposta valida e valida. Non dovrebbe essere sottoposto a downgrade.
Zar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.