2016-08-10 1 views
0

hdd上のhw.exeというファイルを検索するコードの後ろで検索したい。私はこの次のコードを発見したTCLで特定のファイルを見つける:/

set files [glob hw.exe] 
    set sofar -1 

    foreach f $files { 
      set size [file size $f] 
      if {$size > $sofar} { 
        set sofar $size 
        set name $f 
        } 
      } 

    puts "Biggest files is $name at $sofar bytes" 

はこれを修正するために誰でも1つのアイデアを持って?それとも機能はありますか?

+1

http://stackoverflow.com/questions/11104940/tcl-deep-recursive-file-search-search-for-files-with-c-extension – gavv

答えて

2

Tcllibのfileutil packageには、適切なフィルタを作成すれば、探している機能があります。最大のファイルを見つけることは、返されるリスト上で行うことができます。これは、ドライブ上のすべてのファイルのリストよりはるかに小さいはずです!

package require fileutil 

proc filter {name} { 
    return [string match hw.exe $name] 
} 
set hwlist [fileutil::find C:/ filter] 

set sofar -1 
set name "" 
foreach f $hwlist { 
    set size [file size $f] 
    if {$size > $sofar} { 
     set name $f 
     set sofar $size 
    } 
} 
puts "Found $name of size $sofar" 
+0

ねえドナル、おかげで私はfileutilを使用カントパッケージ。私は通常のtclステートメントを使用する必要があります – ManInTheMiddle

+0

'string match 'の使用は実際には同等ですが、必要に応じてより柔軟に対応するのは簡単です。また、質問から最大のサイズ_ファイルリストを見つけ出すためのアルゴリズムは、それが得られるものとほとんど同じです。最大値にはリニアスキャンが必要です。 –

+0

fileutilパッケージはありませんか?ブー! http://core.tcl.tk/tcllib/artifact/4709390bcbd91507からコードをコピーするだけです(これはTclと同じライセンスの下にあります)。 –

関連する問題