Existe um utilitário de linha de comando do Windows para listar os maiores arquivos que excedem o tamanho específico nos subdiretórios?

17

Gostaria de encontrar caminhos completos de arquivos em uma árvore de diretórios que excedam um tamanho específico (por exemplo, 10 MB).

Atualmente ciente do Diruse da Microsoft (parte das Ferramentas de Suporte do Windows XP Service Pack 2 ), que faz o que eu quero, exceto que apenas lista os tamanhos de diretório em vez de arquivos.

Virola de Umber
fonte

Respostas:

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

examinará D: \ e seus subdiretórios, procurará todos os arquivos cujas datas da última modificação sejam maiores que "17 de janeiro de 2012" e cujos tamanhos sejam maiores ou iguais a 200 MB e, em seguida, imprima seus detalhes.

O forfiles está incluído em alguns servidores Windows, mas não por padrão no Windows XP. Você pode extraí-lo do download do "Windows Server 2003 Resource Kit" em http://www.microsoft.com/download/en/details.aspx?id=17657 (apesar de se referir ao Windows Server, ele é executado no Windows XP sem problemas).

learnScrapy
fonte
Soberbo - isso foi o que eu queria (assim que fixei a data do Reino Unido em 17/01/2012). Obrigado.
Umber Ferrule
6

Parece um trabalho para o PowerShell

get-childitem

Navegue para o diretório em questão, verifique as propriedades com:

get-childitem | get-member

length e FullName parecem interessantes, por exemplo:

get-childitem |ft fullname, length -auto

Depois de dominar o básico, tente filtrar com uma instrução where.

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

Experimente 100000

Guy Thomas
fonte
Use Get-ChildItem -recurse de pesquisa recursivamente
themadmax
3

A porta de utilitários do Linux no UnxUtils contém o comando find do Linux .

Você deve renomear find.exe para outra coisa, por exemplo, xfind.exe, pois find é uma função interna no prompt de comando do Windows. Você pode encontrar todos os arquivos maiores que 1000000 bytes:

Diretório xfind -size +1000000 -print

Aqui está o documento para o comando Linux find , mas não sei exatamente como ele foi implementado no UnxUtils e para qual versão do find.

harrymc
fonte
eu acredito GnuWin32 é mais up-to-date: gnuwin32.sourceforge.net ... além de que há sempre Cygwin: cygwin.com
quack quixote
@ ~ charlatão: Você está certo, apenas que o pacote FileUtils no GnuWin32 parece bastante complexo para instalar, exigindo alguns arquivos.
harrymc 03/11/2009
justo. Eu sou um usuário cygwin, pessoalmente. e eu tendem a preferir atualizados do que simples de instalar. mas obrigado por explicar seu raciocínio.
quack quixote
2

O Command Console LE (que eu recomendo muito recentemente), um substituto gratuito para o cmd.exe com muitos recursos extras, possui um comando para isso:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s significa recursivamente, execute o comando no diretório que você deseja pesquisar.
  • /(fpn z) é o formato para exibir os resultados, aqui: fullpathfullname size
  • /[s10485760,] significa tamanho = 10 MB ou mais
Snark
fonte
1

O comando find dos utilitários cygwin faz isso. Para sua exigência

encontre caminhos completos de arquivos em uma árvore de diretórios que excedam um tamanho específico (por exemplo, 10 MB).

isso fornece o resultado:

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

-size +10Mfornece "objetos" maiores que 10 megabytes

-type f fornece apenas arquivos

-printfimprime os arquivos encontrados, %pé caminho, %sé tamanho (em bytes) e \né a nova linha.

Gerd Klima
fonte
1

Acabei de descobrir a ferramenta de linha de comando Disksum , que parece semelhante ao diruse , mas fornece duas formas de saída:

  • classificados por contagens de arquivos por diretório (crescente)
  • classificados por tamanho do diretório (crescente)
Virola de Umber
fonte
1

Acredito que o uso desta solução seja mais preciso com a descrição:

Faça o download do executável da linha de comando sfk.exe em http://sourceforge.net/projects/swissfileknife/files/

Use-o assim

skf.exe list -big

Exemplo de saída (abreviado):

[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 você deseja apenas os 10 arquivos maiores, use:

skf.exe list -big=10

Você pode personalizá-lo ainda mais, seguindo as instruções em: http://stahlworks.com/dev/index.php?tool=list

vicenteherrera
fonte
Resposta maravilhosa, referenciei aqui; softwarerecs.stackexchange.com/questions/30824/...
DankyNanky
-2

Eu sei que a pergunta é sobre linha de comando, mas essa pergunta continua aparecendo no Google, então adicionando outra maneira simples - via Explorer.

  1. abra o local (um disco ou uma pasta) em que deseja procurar arquivos grandes no Windows Explorer
  2. na caixa de pesquisa superior direita, digite "size: gigantic" (a caixa sugere automaticamente a sintaxe e outras opções possíveis)
jitbit
fonte
A pergunta estava procurando respostas na linha de comando.
Joao6
Esta é uma resposta boa e válida. Não deve ter voto negativo.
zar