From 5192a68d0763d0a50736ea611f070c4f71f0b1d7 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Thu, 28 Oct 2004 11:58:24 +0000 Subject: [PATCH 1/1] New, from http://svn.collab.net/repos/svn/trunk/contrib/client-side/wcgrep; added support for excluding {arch} directories. --- wcgrep | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 wcgrep diff --git a/wcgrep b/wcgrep new file mode 100755 index 0000000..a68ad37 --- /dev/null +++ b/wcgrep @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright 2004 Ben Reser +# Licensed under the terms subversion ships under or GPLv2. + +# Useful for greping in a subversion working copy. +# Essentially it behaves the same way your grep command does (in fact it +# ultimately calls the grep command on your path) with a few exceptions. +# Ignores the subversion admin directories (.svn) and vi(m) backup files. +# Recursive is always on with or without -r. +# Always print filename and line numbers. +# Ignores binary files. +# If no path is given the current working directory is searched not stdin. +# Other than that it will take any parameter or pattern your standard grep +# does. +# +# This script requires GNU findutils and by default GNU grep (though that +# can be changed with environment variables). +# +# There are three environment variables you can set that modify the default +# behavior: +# +# WCGREP_GREP Controls what command is used for the grep command. +# If unset or null wcgrep will use the command named grep. +# WCGREP_GREPARGS Controls what arguments are always passed to the grep +# command before the arguments given on the command line. +# If unset or null it defaults to -HnI (always print file +# names, line numbers and ignore binary files). If you wish +# to set no default args set the variable to a space (" "). +# WCGREP_IGNORE Controls what files are ignored by the grep command. +# This is a regex that is passed to the find command with +# -regex so see find's man page for details. If unset or +# null defaults to '.*~$\|.*/\.svn\(/\|$\)', which will +# ignore vim backup files and subversion admin dirs. + + +arg_count=$# +for (( i=1; i <= $arg_count; i++ )); do + arg="$1" + shift 1 + if [ -z "$pattern" ]; then + if [ "$arg" == "--" ]; then + grepargs="$grepargs $arg" + pattern="$1" + shift 1 + ((i++)) + elif [ "${arg:0:1}" != "-" ]; then + pattern="$arg" + else + grepargs="$grepargs $arg" + fi + else + pathargs="$pathargs $arg" + fi +done + +find $pathargs -regex ${WCGREP_IGNORE:-'.*~$\|.*/\(\.svn\|\{arch\}\)\(/\|$\)'} -prune -o \ + -type f -print0 | xargs -r0 ${WCGREP_GREP:-grep} ${WCGREP_GREPARGS:--HnI} \ + $grepargs "$pattern" -- 2.30.2