From 33231f9222486b50e7cfe621fb41a4b7e32e47c1 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sat, 1 Jan 2022 10:26:14 +0000 Subject: [PATCH] g: use xargs instead of finding complete file list before greping --- rc/bin/g | 23 +++++++++++------------ 1 file 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