Чи є утиліта командного рядка Windows для переліку найбільших файлів, що перевищують певний розмір у підкаталогах?


17

Хочеться мати можливість знайти повний шлях файлів у дереві каталогів, що перевищує певний розмір (скажімо, 10 Мб).

В даний час відомо про компанії Microsoft Diruse (частина Windows XP з пакетом оновлень 2 Інструменти підтримки ) , який робить те , що я хочу , за винятком каталогів це тільки списки розмірів , а не файли.

Відповіді:


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

сканує D: \ та його підкаталоги, шукатиме всі файли, останні змінені дати яких перевищують "17-JAN-2012" та розміри яких перевищують або дорівнюють 200MB, а потім надрукує їх дані.

forfiles включений на деякі сервери Windows, але за замовчуванням у Windows XP. Ви можете витягнути його з "Комплект ресурсів Windows Server 2003" за посиланням http://www.microsoft.com/download/uk/details.aspx?id=17657 (якщо це сказано, що для Windows Server, він працює на Win XP без проблем).


Чудово - це зробило те, що я хотів (як тільки я визначив дату для Великобританії 17/01/2012). Спасибі.
Умбер Ферруле

6

Це звучить як робота для PowerShell

get-Childitem

Перейдіть до відповідного каталогу, перевірте властивості за допомогою:

get-childitem | get-member

довжина та FullName виглядають цікаво, наприклад:

get-childitem |ft fullname, length -auto

Після того, як ви освоїли основи, спробуйте фільтрувати за допомогою оператора.

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

Експериментуйте з 100000


Використовуйте Get-ChildItem -рекурсивно для пошуку рекурсивно
themadmax

3

Порт утиліт Linux на UnxUtils містить Linux команду пошуку .

Вам слід перейменувати find.exe на щось інше, наприклад xfind.exe, оскільки find - це вбудована функція в командному рядку Windows. Потім ви можете знайти весь файл розміром понад 1000000 байт:

xfind каталог -розмір +1000000 -друк

Ось документ для команди Linux find , але я не знаю, як саме вона була реалізована в UnxUtils і для якої версії find.


я вважаю, що GnuWin32 є більш сучасним: gnuwin32.sourceforge.net ... а також завжди знайдеться Cygwin: cygwin.com
шарлатаний

@ ~ quack: Ти маєш рацію, лише те, що пакет FileUtils в GnuWin32 здається досить складним для встановлення, вимагає небагато файлів.
harrymc

справедливо. Я особисто користувач cygwin. і я, як правило, віддаю перевагу сучасності над простою в установці. але дякую за пояснення ваших міркувань.
шарлатаний кіхот

2

Візьміть командну консоль LE (яку я останнім часом дуже рекомендую), безкоштовна заміна cmd.exe з великою кількістю додаткових функцій, має для цього команду:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s означає рекурсивно, запустіть команду з каталогу, який ви хочете шукати.
  • /(fpn z) це формат відображення результатів, тут: fullpathfullname size
  • /[s10485760,] означає розмір = 10 Мб або більше

1

Команда знайти cygwin утиліти робить це. Для вашої вимоги

знайти повний шлях файлів у дереві директорій, що перевищує певний розмір (скажімо, 10 Мб).

це дає результат:

знайти -size + 10M -типу f -printf "% p% s \ n"

-size +10Mдає «об’єкти» більше 10 мегабайт

-type f дає лише файли

-printfдрукує знайдені файли, %pє шлях, %sрозмір (у байтах) і \nце новий рядок.


1

Я щойно трапився з інструментом командного рядка, Disksum , який, схоже, на diruse , але дає дві форми виводу:

  • відсортовано за кількістю файлів у каталозі (за зростанням)
  • відсортовано за розміром каталогу (за зростанням)

1

Я вважаю, що використання цього рішення є більш точним з описом:

Завантажте виконавчий файл командного рядка sfk.exe на веб-сайті http://sourceforge.net/projects/swissfileknife/files/

Використовуйте його так

skf.exe list -big

Приклад виводу (скорочено):

[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

Якщо вам потрібні лише перші 10 великих файлів, скористайтеся:

skf.exe list -big=10

Ви можете налаштувати його далі, дотримуючись інструкцій на веб-сторінці: http://stahlworks.com/dev/index.php?tool=list


Чудова відповідь, я посилався на це тут; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky

-2

Я знаю, що питання стосується командного рядка, але це питання продовжує з'являтися в Google, тому додайте ще один простий спосіб - через Explorer.

  1. відкрийте місцеположення (диск чи папку), де ви хочете шукати великі файли в Провіднику Windows
  2. у правому верхньому полі пошуку введіть "size: gigantic" (поле автоматично запропонує синтаксис та інші можливі варіанти)

Питання шукало відповіді командного рядка.
John

Це хороша і достовірна відповідь. Це не повинно бути оскарженим.
зар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.