Here is the snippet
f path/to/directory 'search string' | open_in_mate
This snippet (technically 2 snippets) will recursively scan the contents of files in a directory and then open all the files it finds in Textmate.
It's useful on large projects where you would otherwise use a "find in project" feature.
However, what's useful about the snippet is that it let's me narrow my search very quickly.
Typically, I'll start w/ a broad search term...
f path/to/dir "something"
And I'll then narrow it down...
f path/to/dir "something more specific"
From the command line I can just hit the up arrow or "ctl+p" so I can very quickly refine what I'm looking for very doing.
The "f" command is just an alias around ACK. I inverted the argument order so that I can hit "ctl+w" to erase the search term without having to retype the path.
# in ~/.bash_profile
function f { ack -i "$2" "$1"; }
Then when I feel like I have found what I'm looking for, I'll pipe it to a little script I wrote
open_in_mate
The open_in_mate script will extract file paths from a blob of text and then runs the mate command, which opens up the file in Textmate if it exists.
data = ''
while $stdin.gets
data << $_
end
data.scan(/^(app.*.(erb|rb|coffee|js|css|scss))/i).each do |f|
f = f[0]
if File.exists?(f)
`mate #{f}`
end
end
Note that I'm only looking for certain file type in a Rails app. You could make it more generic if needed.
Just finishing up brewing up some fresh ground comments...