# 2008/11/29 23:59 @ Sean Zhang
proc grep {pattern args} { foreach filename $args { set file [open $filename r] set lnum 0 while {[gets $file line] >= 0} { incr lnum if {[regexp $pattern $line]} { puts "${filename}:${lnum}:${line}" } } close $file } } #---- package require tcllib set listOfMatches [fileutil::grep $_pattern $_fileList]
proc find {{basedir .} {filterScript {}}} { set oldwd [pwd] cd $basedir set cwd [pwd] set filenames [glob -nocomplain * .*] set files {} set filt [string length $filterScript] foreach filename $filenames { if {!$filt || [eval $filterScript [list $filename]]} { lappend files [file join $cwd $filename] } if {[file isdirectory $filename]} { set files [concat $files [find $filename $filterScript]] } } cd $oldwd return $files } #---- package require tcllib set listOfFiles [fileutil::find $_basedir $_filterScript] #---- find . {string match *.txt}
### s/regexp/replacement/g proc substGlobalFile {regexp replacement inputFile outputFile} { set fin [open $inputFile r] set fout [open $outputFile w] while {[gets $fin linein] >= 0} { regsub -all $regexp $linein $replacement lineout puts $fout $lineout } close $fin close $fout }