Created
November 9, 2010 19:20
-
-
Save chuckg/669632 to your computer and use it in GitHub Desktop.
Taken from wcgrep somewhere (apparently here: http://svn.apache.org/viewvc/subversion/trunk/contrib/client-side/wcgrep?revision=877789&view=markup)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Copyright 2004 Ben Reser <[email protected]> | |
# 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). | |
# | |
# Modifications to the original: | |
# - Modified for use on OSX (use gfind found on Macports) and egrep | |
# - Added switch to color always | |
# - Added .git to the hardcoded ignores | |
# | |
# 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 | |
gfind $pathargs -regex ${WCGREP_IGNORE:-'.*~$\|\.\/\.git\|.*/\.svn\(/\|$\)'} -prune -o \ | |
-type f -print0 | gxargs -r0 ${WCGREP_GREP:-egrep} ${WCGREP_GREPARGS:--HnI --color=always} \ | |
$grepargs "$pattern" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello breser, spending your time on github searching for wcgrep thieves!? :)
Sorry, I didn't remove anything from the script. I received it second hand from someone at a previous job and I modified it for my purposes and posted it here so it would be lost if I had some disk failure. No foul play intended! I've added back your original copyright and license and added a note about what I changed. Cheers.