3

A large number of .ppt (Powerpoint) files are available to the command line in various directories of a USB drive. The goal is to find the .ppt file with a case sensitive phrase:

Phrase: 'Return on investment'

It would be preferable if the search mechanism where recursive. Bonus-round for explanations that with an explanation the trapping mechanism and build-out to recursively searching the disk. Thank you

UPDATE

Success thanks to Steeldriver for pointing to helpful search mechanism:

grep -rnw '/path/to/somewhere/' -e "pattern"
  • -r or -R is recursive,
  • -n is line number, and
  • -w stands for match the whole word.
  • -l (lower-case L) can be added to just give the file name of matching files.

Along with these, --exclude, --include, --exclude-dir or --include-dir flags could be used for efficient searching:

  • This will only search through those files which have .c or .h extensions:

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
    
  • This will exclude searching all the files ending with .o extension:

grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
  • Just like exclude files, it's possible to exclude/include directories through --exclude-dir and --include-dir parameter. For example, this will exclude the dirs dir1/, dir2/ and all of them matching *.dst/:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"

This works very well for me, to achieve almost the same purpose like yours.

For more options check man grep.

gatorback
  • 5,785
  • 9
  • 40
  • 65
  • 1
    PPT and all non-pure-text formats are binary, so you can't perform text search on them (mostly). So the answer is no. – Michal Polovka Apr 09 '17 at 14:19
  • 2
    With .pptx (which is a zipped collection of XML files) it might be possible - by unzipping then searching the ppt/slides/slide*.xml files. Similar questions have been asked about .odt and .docx - see here for example. – steeldriver Apr 09 '17 at 14:29

0 Answers0