#!/bin/rc # rgrep: recursive grep # -d: don't grep; only list files to be searched # -p: grep only files whose paths match given pattern rfork e flagfmt='h,i,l,n,s,v,p filepattern,d' args='pattern [file ...]' fn usage{ aux/usage exit usage } fn find{ x='{du -a $*; du $*} | awk ''{ print $2 }'' | sort | uniq -u' if(~ $#flagp 1) x=($x '| grep $flagp') eval $x } if(! ifs=() eval `{aux/getflags $*}) usage if(~ $#* 0 && ~ $#flagd 0) usage pat=$1 shift if(~ $flagd 1){ find $* exit } opts=() for(i in (h i l n s v)){ flag=flag$i if(~ $$flag 1) opts=($opts -$i) } find $* | xargs grep $opts $pat /dev/null