#!/bin/sh
if [ $# -eq 1 ] ; then
pattern="$1"
file_pattern=".*"
elif [ $# -eq 2 ] ; then
pattern="$1"
file_pattern="$2"
else
echo "$(basename "$0") REGEX [FILE PATTERN]" 1>&2
exit 1
fi
find . -type f -print | perl -ne 'print if /'"$file_pattern"'/' | while read -r f ; do
if [ ! -r "$f" ] ; then continue ; fi
hdr="$f"
grep -U -i -n "$pattern" "$f" | while read -r line ; do
if [ ! -z "$hdr" ] ; then
printf "%s\n" "$hdr"
hdr=""
fi
printf "\t%s\n" "$line"
done
done