summaryrefslogtreecommitdiff
path: root/rc/bin/g
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2022-01-01 10:26:14 +0000
committerOri Bernstein <ori@eigenstate.org>2022-01-01 10:26:14 +0000
commit33231f9222486b50e7cfe621fb41a4b7e32e47c1 (patch)
treea48a469b8d28c740992d10dba7f1e25ea8f7b520 /rc/bin/g
parent4db9bebede2bc066a74231cb28c8828509759683 (diff)
g: use xargs instead of finding complete file list before greping
Diffstat (limited to 'rc/bin/g')
-rwxr-xr-xrc/bin/g23
1 files changed, 11 insertions, 12 deletions
diff --git a/rc/bin/g b/rc/bin/g
index 0a13c6125..5f55715a0 100755
--- a/rc/bin/g
+++ b/rc/bin/g
@@ -14,25 +14,24 @@ while(! ~ $#* 1 && ~ $1 -* && ! ~ $1 --){
}
if(~ $1 --)
shift
+if(~ $#* 0) {
+ echo 'usage: g [flags] pattern [files]' >[1=2]
+ exit usage
+}
+pattern=$1
+shift
suffixes='\.([bcChlmsy]|asm|awk|cc|cgi|cpp|cs|go|goc|hs|java|lua|lx|mk|ml|mli|ms|myr|pl|py|rc|sh|tex|xy)$'
fullnames='(^|/)mkfile$'
switch($#*){
case 0
- echo 'usage: g [flags] pattern [files]' >[1=2]
- exit usage
-case 1
- pattern=$1
- files=`$nl{walk -f $recurse | grep -e $fullnames -e $suffixes >[2]/dev/null}
+ walk -f $recurse | grep -e $fullnames -e $suffixes >[2]/dev/null
case *
- pattern=$1
- shift
for(f in $*){
if(test -d $f)
- files=($files `$nl{walk -f $recurse -- $f \
- | grep -e $fullnames -e $suffixes >[2]/dev/null})
+ walk -f $recurse -- $f \
+ | grep -e $fullnames -e $suffixes >[2]/dev/null
if not
- files=($files $f)
+ echo $f
}
-}
-grep -n $flags -- $pattern $files /dev/null
+} | xargs grep -n $flags -- $pattern