How can I search for *.odt or *.doc files that contain certain text in Ubuntu?
I use grep -rl <text to search for>
, but this only works for text files.
Note: a solution that uses grep (such as searchmonkey) will not work because the *.doc or *.odt files have a special format.
From How to search for strings inside files in a folder?
- Recoll wants to index my home directory, but I want to search *.odt files in specific directories; I couldn't figure out how to do that with this tool.
- Searchmonkey seems to be a GUI for grep, and as I mentioned, grep doesn't work on *.doc or *.odt files.
- Regexxer also has the same problem.
From Searching through ODT documents without opening them?
- Like Recoll, I couldn't figure out how to search *.odt files in specific directories with this tool.
catdoc
appears to work recursively for.doc
files in 16.04: https://superuser.com/questions/330242/how-to-recursively-find-a-doc-file-that-contains-a-specific-wordThere's no mention of
.docx
so you'll need to figure that one out yourself.For
.ods
or.odt
files, you could have the following script courtesy kaibob @ ubuntuforums.org:Let's say you call it "libre-search" and have made it executable.
Then, running
libre-search your_string
should list files containing your_string. It will not list the string context.unzip -ca "$i" 2>/dev/null
takes care of unwanted content.grep -iq
makes the search case-insensitive.nl
numbers the output.