====== Ubuntu - Bash - Scripts - tgrep ======
**tgrep** searches for character strings in each file, in a file tree.
----
===== Usage =====
tgrep [-c|-h] string [file ...]
----
===== Code =====
#!/bin/bash
#
# @(#) tgrep v1.0 Search for a string in a tree.
OPT=""
for ARG in $@
do
if [ "`echo $ARG|cut -c1`" = "-" ]
then case $ARG in
-c) OPT="-name \"*.c\""
shift;;
-h) OPT="-name \"*.h\""
shift;;
*) echo "$O: incorrect argument" >&2
echo "usage: $O [-c|-h] string [file ...] >&2
exit 1;;
esac
fi
done
case $# in
0) echo "$O: argument error" >&2
echo "usage: $O [-c|-h] string [dir ...]" >&2
exit 2
;;
1) while read FILE
do
grep -y "$1" $FILE /dev/nul
done
;;
*) STRING=$1; shift
eval find "$@" -type f $OPT -print | sort | while read FILE
do
grep -y "$STRING" $FILE /dev/null
done
;;
esac
----
===== Example Usage =====
tgrep "profanity" /
tgrep unix $HOME
tgrep -c "^sleep()$" $HOME/src
find /usr/src -name "*.c" -print | tgrep "ioctl"
tgrep "| more" `find . -type f -print`
tgrep trap /bin /usr/bin /etc
grep "$1" `find "$2" -print`
and
find "$2" -print | while read F
do
grep "$1" $F
done