#!/bin/bash # FINDGREP INFO ######################## PROGRAMINFO="findgrep version 6. This Script simplifies the recursive search of any given string in a given directory. It combines find and grep. Results are logged for later viewing and analyzing. findgrep remembers directories and search strings for following searches." PROGRAMINFO2="To change the path for logging of queries, please edit \$SAVEFILE in this script. Searches are case insensitive by default. Written by LinuxNetzer. www.netz10.de. contact: linuxnetzer-*-aet-*-netz10.de. findgrep v6 is released under GPL v3." # CHANGELOG ############################# # Script now remembers directories and search strings. # Logfile now moved to /tmp. # Changed to more userfriendly interface. # Added many comments for better script reading. # DEBUG MODE ############################ # set -x # uncomment for debugging # DEFINING SESSION SETTINGS ############# ROOTDIR="$HOME/.findgrep" # place to store files SAVEDIR="/$ROOTDIR/remember.dir" # last search directory SAVESTRING="/$ROOTDIR/remember.string" # last search string ######################################### if [ ! -f $ROOTDIR ] # file storage directory exists? then mkdir $ROOTDIR # if not: create directory fi ######################################### if [ ! -f $SAVEDIR ] # last search directory defined? then echo $HOME > $SAVEDIR # if not, set to: home directory fi ######################################### if [ ! -f $SAVESTRING ] # last search string defined? then echo $USER > $SAVESTRING # if not, set to: user name fi # VARIABLES ############################# PROGNAME="findgrep v6" # name of program SAVEFILE="$ROOTDIR/.findgrep.log" # log file location SEARCHDIR="`cat $SAVEDIR`" # load search directory SEARCHSTRING="`cat $SAVESTRING`" # load search string DIVIDER="--------------------------------------------------" # better viewing # FUNKTION HEADER ####################### HEADER () { clear echo " __ _ _ / _(_)_ __ __| | __ _ _ __ ___ _ __ | |_| | '_ \ / _. -- _. | '__/ _ \ '_ \ | _| | | | | (_| | (_| | | | __/ |_) | |_| |_|_| |_|\__,_|\__, |_| \___| .__/ |___/ |_| " | grep --color . echo " Recursive Text String Search Tool" | grep --color . echo } # CHOOSE DIRECTORY TO SEARCH ############ HEADER echo "Search in Directory: $SEARCHDIR ?" | grep --color ? echo "If OK, press ENTER. To change please enter new path." read -e INPUT if [ "$INPUT" != "" ] then echo $INPUT > $SAVEDIR SEARCHDIR="$INPUT" fi HEADER echo "Searching in: $SEARCHDIR " | grep --color $SEARCHDIR # CHOOSE TEXTSTRING TO SEARCH #################### echo "Search for: $SEARCHSTRING ?" | grep --color ? echo "if OK, press ENTER. To change please enter new searchstring." read -e INPUT2 if [ "$INPUT2" != "" ] then echo $INPUT2 > $SAVESTRING SEARCHSTRING="$INPUT2" fi echo "$SEARCHSTRING" | grep --color . # SUMMARY ######################################## HEADER echo "SUMMARY:" echo "Searching in: $SEARCHDIR" | grep --color $SEARCHDIR echo "Searching for: $SEARCHSTRING" | grep --color $SEARCHSTRING echo "Logging to: $SAVEFILE" | grep --color $SAVEFILE echo $DIVIDER echo "Now starting recursive search for $SEARCHSTRING in $SEARCHDIR..." echo $DIVIDER echo "SEARCH RESULTS:" | grep --color "SEARCH RESULTS" export GREP_COLOR="31" # EXECUTE ######################################### find $SEARCHDIR -type f -exec grep -i $SEARCHSTRING --exclude=$SAVEFILE /dev/null {} \; 2> /dev/null | tee $SAVEFILE | grep -i --color $SEARCHSTRING # DISPLAY RESULTS ################################ echo $DIVIDER export GREP_COLOR="01;31" # fett, rot echo "Search in $SEARCHDIR: finished" | grep --color . echo "Found \"$SEARCHSTRING\": `cat $SAVEFILE | wc -l`" | grep --color . echo "Results saved to: $SAVEFILE" | grep --color . echo $DIVIDER echo $PROGRAMINFO2 echo $DIVIDER exit