26

I am looking for a software that will search text in files from a folder similar to XYplorer.

Is there something similar?

Octavian Helm
  • 14,515
S L
  • 1,939

10 Answers10

22

There is a very nice one that shipped with Ubuntu out of the box until 16.04. For modern releases, read the update below!

  1. Open the Dash (Super key or the Ubuntu button) and begin typing until you find Search for Files

    enter image description here

  2. The above is for Unity, the default Desktop Environment in Ubuntu. In menu-driven environments, go to Applications -> Accessories -> Search for Files

    enter image description here

  3. Expand the Select more options section and enter the text to search for in the Contains the text: input field.

    enter image description here

Features:

  • 100% GUI
  • You can search for file names or content
  • It does look in sub-folders.

Given your scenario (no terminal commands, simple to use interface) I think theres no better option.

PS: on the Contains the text: input field the '.' character is a wildcard. To escape it you have to use '[]'. E.g.: type Contains the text: [.]myFunction to search for .myFunction


UPDATE: Gnome Search Tool was unfortunately removed from Ubuntu on early 2018. For Ubuntu 18.04 onwards there's mate-search-tool, from the mate-utils package, that looks and behave exactly like the defunct Gnome tool:

sudo apt install mate-utils
mate-search-tool

However, its associated .desktop launcher does not show by default in Gnome/Unity menu, but a simple edit can workaround that:

sed '/^OnlyShowIn/s/^/#/' /usr/share/applications/mate-search-tool.desktop \
> "$HOME"/.local/share/applications/mate-search-tool.desktop
MestreLion
  • 20,726
11

use

 grep -nr <your text> .

put the text that you want to find inside the <your text>

Octavian Helm
  • 14,515
wizztjh
  • 303
10

I am a fan of searchmonkey (GPL, free, cross-platform, pretty light on resources and very fast).

enter image description here

Will
  • 705
10

you can use

find . -name '*.*' -exec grep -Hn 'text to find' '{}' \;

-name '*.*' or '*.txt' (use file mask here)
'text to find' (place text you want to find here)

find . -type f -exec grep -Hn 'text to find' '{}' \;

if you want to search all files

Mikl
  • 461
9

GUI (Graphical) tool:

gnome-search-tool

you can find it in Ubuntu main menu

Menu -> Accessories -> Search for Files

or run it using hot key ALT+F2

Mikl
  • 461
4

Regexxer will let you search text in files. Not sure what you mean by "in folders".

enter link description here

Seth
  • 59,332
uvasal
  • 513
3

Graphical search:

in Kubuntu open Dolphin, then Edit->Find (Ctrl+F)

change from filename to Content and adjust from where to look for.

Osis
  • 753
2

Recoll does indexing and you can do full text searches of documents and email.

Dustin
  • 2,173
1

I compared three of the suggestions in here with 64 bit 16.04 Kubuntu:

  1. Searchmonkey works with 64-bit Ubuntu nowadays. It is similar to regexxer. It appeared fast, but naturally it is much slower than index based search.
  2. Search for Files and Alt-F2 don't work with the KDE Ubuntu version.
  3. My recommendation is Recoll and I have added some installation instructions for it. For me, the default installation supported PDF (test this!), DOCX, TAR, ZIP etc.

    sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
    sudo apt-get install recoll antiword
    recoll
    
  4. First line is probably not required: it adds partner installation repository.

  5. Antiword is optional. It is needed to support older .doc files.
  6. Enable following symbolic links and the root directory from Recoll Preferencies if necessary.
  7. Create cron job for Recoll indexing using the GUI or make it to start on every login.
  8. Change the Recoll setting in preferences from English to All languages if appropriate for you.
  9. Start the indexing, at least for me it was surprisingly fast and didn't use all resources so I was able to continue using the laptop.
  10. I have found one bug from Recoll so far: if you search for file name with "PST", it doesn't find it even though it is in uppercase. "pst" works and it finds both uppercase and lowercase names.
  11. See more about recoll from https://www.lesbonscomptes.com/recoll/features.html

If you wish to add support for Outlook PST files, then you need to execute the following as well.

    sudo apt-get install readpst
    mkdir ~/PST
    find -L ~ -name "*.pst" -print | awk "{ printf \"%s%s %s%s%s %s\\n\", \"mkdir ~/PST/\", \$1, \"; readpst -o ~/PST/\", \$1, \" -D -j 4 -r -tea -u -w\", \$1 }" > /tmp/myPstFiles
    cat /tmp/myPstFiles
    chmod 755 /tmp/myPstFiles
    /tmp/myPstFiles
  1. Change root directory from ~ to / if necessary in the find command.
  2. My find script has a bug in it: it creates too long directory structure now. But it was easier for me to modify the temp file manually than to find a fix to this. Main target was that this will work for several PST files and it does that.
  3. See more about Readpst from http://www.five-ten-sg.com/libpst/rn01re01.html and https://blog.robseder.com/2015/08/29/working-with-a-pst-file-in-linux/
0

I'm really want to introduce one tool which is based on ncurses library to provide the text-based user interface. The tool called NCGREP(grep based on ncurses) is mainly for search text in the specific folder. Hope this is what you want. This source of the tool has been hosted on github.com, see more at https://github.com/ncgrep/ncgrep

enter image description here
Click image to see demo animation

karel
  • 122,292
  • 133
  • 301
  • 332
huxiaoxu
  • 1
  • 1