web-dev-qa-db-ja.com

サブディレクトリに特定のサイズを超える最大のファイルをリストするWindowsコマンドラインユーティリティはありますか?

特定のサイズ(たとえば10MB)を超えるディレクトリツリー内のファイルの完全パスを検索できるようにしたい。

現在、Microsoftの DiruseWindows XP Service Pack 2 Support Tools )の一部を認識しています。これは、私がやりたいことexceptファイルではなくディレクトリのサイズのみを一覧表示します。

18
Umber Ferrule
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ではデフォルトでは含まれていません。 http://www.Microsoft.com/download/en/details.aspx?id=17657 にある「Windows Server 2003リソースキット」のダウンロードからそれを抽出できます(ただし、Windows向けとのことです)サーバー、それは勝利XP問題なく)で実行されます。

30
Harry

これはPowerShellの仕事のように聞こえます

get-childitem

問題のディレクトリに移動し、次のコマンドでプロパティを確認します。

get-childitem | get-member

たとえば、lengthとFullNameは興味深いものです。

get-childitem |ft fullname, length -auto

基本をマスターしたら、whereステートメントでフィルタリングしてみてください。

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

100000で実験する

7
Guy Thomas

nxUtils のLinuxユーティリティポートには、Linuxfindコマンドが含まれています。

FindはWindowsコマンドプロンプトの組み込み関数であるため、find.exeの名前を別のxfind.exeなどに変更する必要があります。次に、1000000バイトより大きいすべてのファイルを次の方法で検索できます。

xfindディレクトリ-size +1000000 -print

Linuxコマンド find のドキュメントは次のとおりですが、UnxUtilsでどのように実装されているか、およびどのバージョンのfindであるかはわかりません。

3
harrymc

Take Command Console LE (私は最近、多くのことをお勧めします)、たくさんのcmd.exeの無料の代替品追加機能のコマンド、そのためのコマンドがあります:PDIR

_pdir /s /(fpn z) /[s10485760,]
_
  • _/s_は、再帰的に、検索するディレクトリからコマンドを実行することを意味します。
  • /(fpn z)は、結果を表示するための形式です。ここでは、_fullpathfullname size_です。
  • _/[s10485760,]_は、サイズ= 10 MB以上を意味します
2
Snark

このソリューションを使用すると、説明がより正確になると思います:

http://sourceforge.net/projects/swissfileknife/files/ からコマンドライン実行可能ファイルsfk.exeをダウンロードします。

このように使う

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
vicenteherrera

cygwin ユーティリティのfindコマンドがこれを行います。あなたの要件について

特定のサイズ(たとえば10MB)を超えるディレクトリツリー内のファイルの完全パスを検索します。

これは結果を与えます:

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

-size +10Mは、「オブジェクト」10メガバイトよりも大きい

-type fはファイルのみを提供します

-printfは見つかったファイルを出力します、%pはパス、%sはサイズ(バイト単位)であり、\nは改行です。

1
Gerd Klima

コマンドラインツール Disksum で発生しました。これはdiruseに似ていますが、2つの形式があります。出力:

  • ディレクトリごとのファイル数でソート(昇順)
  • ディレクトリサイズでソート(昇順)
1
Umber Ferrule