Gibt es ein Windows-Befehlszeilenprogramm zum Auflisten der größten Dateien in Unterverzeichnissen, die eine bestimmte Größe überschreiten?

17

Möchte in der Lage sein, vollständige Dateipfade in einem Verzeichnisbaum zu finden, die eine bestimmte Größe überschreiten (z. B. 10 MB).

Derzeit ist Microsoft Diruse (Teil der Windows XP Service Pack 2-Supporttools ) bekannt, das genau das tut, was ich möchte, außer dass nur die Verzeichnisgrößen und keine Dateien aufgelistet werden.

Umber Ferrule
quelle

Antworten:

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

Durchsucht D: \ und seine Unterverzeichnisse, sucht nach allen Dateien, deren letztes Änderungsdatum größer als "17-JAN-2012" und deren Größe größer oder gleich 200 MB ist, und druckt dann ihre Details aus.

forfiles ist auf einigen Windows-Servern enthalten, unter Windows XP jedoch nicht standardmäßig. Sie können es aus dem "Windows Server 2003 Resource Kit" -Download unter http://www.microsoft.com/download/en/details.aspx?id=17657 extrahieren ohne Probleme).

learnScrapy
quelle
Hervorragend - das hat getan, was ich wollte (sobald ich den Termin für das UK am 17.01.2012 festgelegt habe). Vielen Dank.
Umber Ferrule
6

Das klingt nach einem Job für PowerShell

get-childitem

Navigieren Sie zu dem betreffenden Verzeichnis und überprüfen Sie die Eigenschaften mit:

get-childitem | get-member

Länge und vollständiger Name sehen interessant aus, zum Beispiel:

get-childitem |ft fullname, length -auto

Wenn Sie die Grundlagen beherrschen, filtern Sie mit einer where-Anweisung.

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

Experimentieren Sie mit 100000

Guy Thomas
quelle
Verwenden Sie Get-ChildItem -recurse, um rekursiv zu suchen
themadmax
3

Der Linux-Dienstprogramm-Port unter UnxUtils enthält den Linux- Befehl find .

Sie sollten find.exe in etwas anderes umbenennen, z. B. xfind.exe, da find eine integrierte Funktion in der Windows-Eingabeaufforderung ist. Sie können dann alle Dateien finden, die größer als 1000000 Bytes sind, indem Sie:

xfind Verzeichnis -size +1000000 -print

Hier ist das Dokument für den Linux-Befehl find , aber ich weiß nicht, wie genau es in UnxUtils implementiert wurde und für welche Version von find.

Harrymc
quelle
Ich glaube, GnuWin32 ist aktueller: gnuwin32.sourceforge.net ... und es gibt immer Cygwin: cygwin.com
Quacksalber 3.
@ ~ quack: Sie haben recht, nur dass das FileUtils-Paket in GnuWin32 ziemlich komplex zu installieren scheint und ziemlich viele Dateien erfordert.
Harrymc
Meinetwegen. Ich bin ein Cygwin-Benutzer, persönlich. und ich neige dazu, up-to-date gegenüber einfach zu installierenden vorzuziehen. aber danke, dass du deine Argumentation erklärt hast.
Quack Quijote
2

Take Command Console LE (das ich in letzter Zeit sehr empfohlen habe), ein kostenloser Ersatz für cmd.exe mit vielen zusätzlichen Funktionen, hat einen Befehl dafür:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s Bedeutet, dass Sie den Befehl rekursiv in dem Verzeichnis ausführen, in dem Sie suchen möchten.
  • /(fpn z) ist das Format für die Anzeige der Ergebnisse, hier: fullpathfullname size
  • /[s10485760,] bedeutet Größe = 10 MB oder größer
Snark
quelle
1

Der Befehl find von cygwin utilities erledigt dies. Für ihre anforderung

Suche nach vollständigen Dateipfaden in einem Verzeichnisbaum, der eine bestimmte Größe überschreitet (z. B. 10 MB).

Dies ergibt das Ergebnis:

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

-size +10Mgibt Ihnen "Objekte" größer als 10 Megabyte

-type f gibt Ihnen nur Dateien

-printfdruckt die gefundenen Dateien, %pist Pfad, %sist Größe (in Bytes) und \nist die Newline.

Gerd Klima
quelle
1

Ich bin gerade auf das Kommandozeilen-Tool Disksum gestoßen , das diruse ähnelt , aber zwei Arten der Ausgabe bietet:

  • sortiert nach Anzahl der Dateien pro Verzeichnis (aufsteigend)
  • sortiert nach Verzeichnisgröße (aufsteigend)
Umber Ferrule
quelle
1

Ich glaube, dass die Verwendung dieser Lösung mit der Beschreibung genauer ist:

Laden Sie die ausführbare Befehlszeilen-Datei sfk.exe unter http://sourceforge.net/projects/swissfileknife/files/ herunter.

Benutze es so

skf.exe list -big

Beispielausgabe (abgekürzt):

[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

Wenn Sie nur die 10 größten Dateien haben möchten, verwenden Sie:

skf.exe list -big=10

Sie können es wie folgt weiter anpassen: http://stahlworks.com/dev/index.php?tool=list

vicenteherrera
quelle
Wunderbare Antwort, ich habe hier darauf verwiesen; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky
-2

Ich weiß, dass es sich bei der Frage um eine Befehlszeile handelt, aber diese Frage taucht in Google immer wieder auf, sodass eine weitere einfache Möglichkeit hinzukommt - über den Explorer.

  1. Öffnen Sie den Speicherort (einen Datenträger oder einen Ordner), an dem Sie im Windows-Explorer nach großen Dateien suchen möchten
  2. Geben Sie im Suchfeld oben rechts "Größe: gigantisch" ein (das Feld schlägt die Syntax und andere mögliche Optionen automatisch vor).
jitbit
quelle
Die Frage suchte nach Antworten auf die Befehlszeile.
John
Dies ist eine gute und gültige Antwort. Es sollte nicht herabgestimmt werden.
Zar