Czy istnieje narzędzie wiersza polecenia systemu Windows do wyświetlania największych plików przekraczających określony rozmiar w podkatalogach?

Odpowiedzi:

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

skanuje D: \ i jego podkatalogi, szuka wszystkich plików, których daty ostatniej modyfikacji są większe niż „17-JAN-2012” i których rozmiary są większe lub równe 200 MB, a następnie drukuje ich szczegóły.

Pliki forfile są dołączane do niektórych serwerów Windows, ale domyślnie nie do Windows XP. Możesz go wyodrębnić z zestawu „Windows Server 2003 Resource Kit” pod adresem http://www.microsoft.com/download/en/details.aspx?id=17657 (choć, jak mówi, jest przeznaczony dla systemu Windows Server, działa na Win XP bez problemów).

learnScrapy
źródło
Znakomity - zrobił to, co chciałem (jak tylko ustaliłem datę dla Wielkiej Brytanii 17.01.2012). Dzięki.
Umber Ferrule
6

To brzmi jak zadanie dla PowerShell

get-childitem

Przejdź do odpowiedniego katalogu, sprawdź właściwości za pomocą:

get-childitem | get-member

długość i pełna nazwa wyglądają interesująco, na przykład:

get-childitem |ft fullname, length -auto

Po opanowaniu podstaw spróbuj filtrować za pomocą instrukcji where.

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

Eksperymentuj z 100000

Guy Thomas
źródło
Użyj polecenia Get-ChildItem -recurse, aby wyszukiwać rekurencyjnie
themadmax
3

Port narzędzia Linux na UnxUtils zawiera Linux find polecenie.

Powinieneś zmienić nazwę find.exe na coś innego, na przykład xfind.exe, ponieważ find to wbudowana funkcja w wierszu polecenia systemu Windows. Następnie możesz znaleźć cały plik większy niż 1000000 bajtów według:

xfind katalog -rozmiar +1000000 -print

Oto dokument dotyczący komendy Linux find , ale nie wiem, jak dokładnie została zaimplementowana w UnxUtils i dla której wersji find.

harrymc
źródło
wierzę GnuWin32 jest bardziej up-to-date: gnuwin32.sourceforge.net ... Plus zawsze Cygwin: cygwin.com
szarlatan Kichot
@ ~ quack: Masz rację, tyle że pakiet FileUtils w GnuWin32 wydaje się dość skomplikowany w instalacji, wymagając sporo plików.
harrymc
Słusznie. osobiście jestem użytkownikiem cygwina. i wolę aktualizować na bieżąco niż proste w instalacji. ale dziękuję za wyjaśnienie twojego rozumowania.
quack quixote
2

Weźmy Console LE (którą ostatnio bardzo często polecam), darmowy zamiennik cmd.exe z wieloma dodatkowymi funkcjami, ma takie polecenie:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s oznacza rekurencyjnie, uruchom polecenie z katalogu, który chcesz przeszukać.
  • /(fpn z) jest formatem wyświetlania wyników, tutaj: fullpathfullname size
  • /[s10485760,] oznacza rozmiar = 10 MB lub większy
Snark
źródło
1

Robi to polecenie find narzędzi cygwin . Dla twojego wymagania

znajdź pełne ścieżki plików w drzewie katalogów, które przekraczają określony rozmiar (powiedzmy 10 MB).

daje to wynik:

znajdź -rozmiar + 10M -typ f -printf "% p% s \ n"

-size +10Mdaje ci „przedmioty” większe niż 10 megabajtów

-type f daje tylko pliki

-printfwypisuje znalezione pliki, %pjest ścieżką, %sma rozmiar (w bajtach) i \njest znakiem nowej linii.

Gerd Klima
źródło
1

Właśnie natrafiłem na narzędzie wiersza polecenia, Disksum , które wydaje się podobne do diruse , ale daje dwie formy danych wyjściowych:

  • posortowane według liczby plików według katalogu (rosnąco)
  • posortowane według rozmiaru katalogu (rosnąco)
Umber Ferrule
źródło
1

Uważam, że użycie tego rozwiązania jest dokładniejsze z opisem:

Pobierz plik sfk.exe z wiersza polecenia na http://sourceforge.net/projects/swissfileknife/files/

Użyj tego w ten sposób

skf.exe list -big

Przykładowe dane wyjściowe (w skrócie):

[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

Jeśli chcesz tylko 10 największych większych plików, użyj:

skf.exe list -big=10

Możesz go dostosować, wykonując dalsze instrukcje z: http://stahlworks.com/dev/index.php?tool=list

Vicenteherrera
źródło
Cudowna odpowiedź, odnalazłem ją tutaj; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky 27.04.16
-2

Wiem, że pytanie dotyczy wiersza polecenia, ale to pytanie wciąż pojawia się w Google, więc dodajmy kolejny prosty sposób - za pośrednictwem Eksploratora.

  1. otwórz lokalizację (dysk lub folder), w której chcesz szukać dużych plików w Eksploratorze Windows
  2. w prawym górnym polu wyszukiwania wpisz „rozmiar: gigantyczny” (pole automatycznie zasugeruje składnię i inne możliwe opcje)
jitbit
źródło
Pytanie szukało odpowiedzi z wiersza poleceń.
John
To jest dobra i ważna odpowiedź. Nie należy go lekceważyć.
zar