TextMate: Search a Current Folder

This is a script for finding a string in files under a current folder in TextMate. It can be very convenient if you know what you are looking is in a particular folder by saving your time searching each file individually or going through a long list of the search result produced by ‘Find in Project’ function.

# Search text in files under the current folder
# by Saophalkun Ponlu
# 15 Jun 2009 | Last Changed 12 Oct 2009

# input dialog box
res=$(CocoaDialog inputbox --title "Search Folder" \
--informative-text "Enter a search string:" \
--button1 "Okay" --button2 "Cancel")

# get the actual search string
SEARCH=$(tail -n1 <<<"$res")

# search and replace regular expression
MATCH="^\([a-zA-Z/._-]*\):\([0-9]*\):\(.*\)"
REPLACE='<li><a href=\"txmt:\/\/open\/?url=file:\/\/\/\1\&line=\2\">\1 (\2)<\/a> <p>\3<\/p><\/li>'

# output styles
echo "
<style>
body { font-size: 12px; }
li { list-style: none; border-bottom: 2px solid #eee; padding: 10px 5px 5px }
li p { color: #333; margin-left: 1.5em; margin-top: .6em; margin-bottom: 1.2em; }
</style>
"


SELECTED_DIR=$TM_SELECTED_FILE

# if the selected item (path) is a file then get its directory instead
if [ -f "$SELECTED_DIR" ]; then
SELECTED_DIR=`dirname $SELECTED_DIR`;
fi

echo $SELECTED_DIR
echo "<h3>You searched for: <em style=\"color: red\">$SEARCH</em></h3>"

# the search process starts
grep -rn --exclude=*.svn-base "$SEARCH" $SELECTED_DIR | sed  "s/$MATCH/$REPLACE/g"

No comment so far

No comments yet.

Leave a comment


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word