Slashdot Mirror


A Grep-like Utility That Works on More than Text?

Nutria writes "This article got me thinking: What's a poor Unix-using guy to do, when he needs to grep text, compressed tarballs, OO.o documents, Debian archives, mime-encoded files, Evil Microsoft documents, PDF files, compressed AbiWord files, etc." Is there an extensible searching program for Unix that can handle a variety of different file-types? Search engines like ht://Dig can accomplish part of this task, however currently it doesn't index the whole file (just portions of the metadata). If you had to perform a substring search on a set of documents of different types, what tools would you use to accomplish this task?

12 of 65 comments (clear)

  1. Beagle by Markusis · · Score: 3, Informative

    Beagle will probably meet at least some of these goals. Beagle also aims to index things like your gaim-logs, browsing history, and email as well as your files. This is closely related to the dashboard project. Both projects can be retrieved from Gnome CVS.

    http://www.nat.org/beagle/
    http://www.nat.org/dashboard/

  2. Are you sure you're a "unix guy"? by ivan256 · · Score: 3, Insightful

    What's a poor Unix-using guy to do, when he needs to grep text, compressed tarballs, OO.o documents, Debian archives, mime-encoded files, Evil Microsoft documents, PDF files, compressed AbiWord files, etc.

    Um, why not pipe the output of your favorite program that interacts with the file type you're interested in to grep? Isn't that the "poor unix guy" way?

    catdoc Blah.doc | grep foo
    zcat compressed.txt.gz | grep foo
    apt-cache show package | grep foo
    pdftotext Blah.pdf | grep foo

    etc...

  3. How, indeed! by Otter · · Score: 4, Funny

    The same way everything else works!

    1) Be had a half-decent version years ago.

    2) Apple will have a reasonably robust version out soon.

    3) Microsoft will have a more frustrating knock-off of Apple's version a few years later.

    4) Four competing, incompatible open-source projects will copy the Apple and Microsoft implementations. When one of those companies sends a cease and desist letter to an open-source project that has shamelessly ripped off its trademarked name, Linux zealots will complain about how "intellectual property laws stifle our innovation"!

  4. Use a pipe and untilities by Matt+Perry · · Score: 4, Informative
    The unix shell and pipe are your friends:
    grep text
    grep text filename
    compressed tarballs
    tar zOxf filename | grep text
    OO.o document
    unzip -p filename | grep text
    mime-encoded files
    mimedecode filename | grep text
    Evil Microsoft documents
    strings filename | grep text
    PDF files
    strings filename | grep text

    This would make a great shell script project. You could use file to detect the type and then filter and grep it appropriately. This sounds useful enough that I'll probably write this script this weekend. Thanks for the idea.

    --
    Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    1. Re:Use a pipe and untilities by robbkidd · · Score: 3, Informative

      PDF files[?]
      strings filename | grep text

      I'm guessing you've never tried that search before. PDF stores the meat of a document in compressed data streams. strings would return a bunch of font names, headers and compressed garbage.

      There are a few other tools available, at various stages of stability:

    2. Re:Use a pipe and untilities by bunnyman · · Score: 4, Informative

      less(1) already does this! Check out the $LESSOPEN variable on your Linux system, it points to a shell script that detects what type of file you are viewing, and runs a filter on it to get plain text from it.

  5. Full text search engine? by bentfork · · Score: 3, Informative
    I like the Catfish namazu.org <-- google cache ( thats catfish in japanese ).

    It has multiple 'filters' that allow you to index .txt .pdf .doc and various other file formats. It also has some grep like command line utilities that allows you to 'grep' for text.

    Oh, and it has a perl front end for apache, and IIS. ( win32 installer available from here: www.namazu.org/windows

    caveat: As with any full text search engine, the files should be reindexed on a regular basis, but this is worth it as the searches are very fast even with gigs of documents.

    enjoy

  6. Re:Beagle by HRbnjR · · Score: 4, Informative

    Seth Nickell has a blog entry discussing solutions in this area, including Gnome Storage, WinFS, Dashboard, Medusa, Spotlight, and Beagle.

  7. Penetrator by cbcbcb · · Score: 3, Informative
    I've just implemented a Word/PDF/text search system using Penetrator.

    It acts as a web search engine or a grep-like tool. You can either build an index or configure it to search on demand.

    You can add filters to deal with any file type you like. I use xpdf and wvWare to handle PDFs and word documents.

    A little bit of work to set up, but it's a nifty bit bit of software.

  8. Half a solution .... by gstoddart · · Score: 3, Informative
    Um, why not pipe the output of your favorite program that interacts with the file type you're interested in to grep? Isn't that the "poor unix guy" way?


    Because it involves the user explicitly using the right utility to decode each file type for every single file.

    So you don't get the nice simple case the user is looking for like:

    grep foo *

    or even something cool like

    find . -name "$pattern" -exec egrep -l -e "$1" {} \;

    Grep is often used to hunt through large amounts of docs because you know something has that text, but you can't remember what.

    What the guy is asking for is something that would take my second example, figure out the file type, and then do it automatically for you.

    Cheers

    --
    Lost at C:>. Found at C.
  9. Haven't tried it, but SWISH sounds good by chjones · · Score: 4, Informative

    Haven't actually tried it out (everything I write seems to be text or TeX), but I remembered reading this article a while back: "How to Index Anything", Linux J., July 1 2003.

    --

    Christian Jones
    Medicine. Mathematics. Mediocrity.

    1. Re:Haven't tried it, but SWISH sounds good by bobv-pillars-net · · Score: 4, Informative
      Actually, the last time I needed to index a large group of files (for disaster recovery purposes; the files in question were all from the lost+found directory) I used Swish++.

      And yes, it works VERY well, orders of magnitude faster than Ht:/Dig, features incremental reindexing, and can be configured to auto-convert various filetypes to text before indexing. I'd say it's exactly what the poster ordered.

      --
      The Web is like Usenet, but
      the elephants are untrained.