17

Хотел бы иметь возможность находить полные пути файлов в дереве каталогов, которые превышают определенный размер (скажем, 10 МБ).

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

8 ответов8

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

будет сканировать D:\ и его подкаталоги, искать все файлы, даты последнего изменения которых превышают «17-ЯНВ-2012» и чьи размеры больше или равны 200 МБ, а затем распечатывать их данные.

forfiles включен на некоторых серверах Windows, но не включен по умолчанию в Windows XP. Вы можете извлечь его из пакета "Windows Server 2003 Resource Kit" по адресу http://www.microsoft.com/download/en/details.aspx?id=17657 (хотя он и предназначен для Windows Server, он работает на Win XP без проблем).

6

Это звучит как работа для PowerShell

Get-ChildItem

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

get-childitem | get-member

длина и FullName выглядят интересно, например:

get-childitem |ft fullname, length -auto

Как только вы освоите основы, попробуйте выполнить фильтрацию с помощью оператора where.

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

Эксперимент с 100000

3

Порт утилит Linux в UnxUtils содержит команду поиска Linux.

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

xfind directory -size +1000000 -print

Вот документация для команды Linux find, но я не знаю, как именно она была реализована в UnxUtils и для какой версии find.

2

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

pdir /s /(fpn z) /[s10485760,]
  • /s означает рекурсивно, запустите команду из каталога, который вы хотите найти.
  • /(fpn z) - формат для отображения результатов, здесь: fullpathfullname size
  • /[s10485760,] означает размер = 10 МБ или больше
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

1

Команда find утилит cygwin делает это. Для вашего требования

найдите полные пути файлов в дереве каталогов, которые превышают определенный размер (скажем, 10 МБ).

это дает результат:

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

-size +10M дает вам "объекты" размером более 10 мегабайт

-type f выдает только файлы

-printf печатает найденные файлы, %p - это путь, %s - это размер (в байтах), а \n - это новая строка .

1

Я только что наткнулся на инструмент командной строки, Disksum, который похож на diruse, но дает две формы вывода:

  • отсортировано по количеству файлов в каталоге (по возрастанию)
  • отсортировано по размеру каталога (по возрастанию)
-2

Я знаю, что вопрос касается командной строки, но этот вопрос постоянно возникает в Google, поэтому добавим еще один простой способ - через Проводник.

  1. откройте место (диск или папку), где вы хотите искать большие файлы в проводнике Windows
  2. в верхнем правом окне поиска введите «size:gigantic» (в этом поле будет автоматически предложен синтаксис и другие возможные параметры)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .