A small tool to find a string in a directory interactively
- Python 3
- Linux
- vim
Finding some string in a set of files/directories is a common task. It's trivial to achieve everything using recursive grep
.
In fact, this tool uses the same old dependable grep
tool. However, most of the times we search these words in order
to see the context in which they are being used (not a single line of context).
Most of the times, I ended up copy-pasting the filename and opening the file and searching for the word. If I am interested in the word appearing in 4 files,
I ended up opening 4 files by copy-pasting the path and searching for the word within the file (using vim search). So, why not automate the task when we know what repeats! That's all this tool does but interactively.
Nothing more nothing less. It's the same old grep
with a wrapper.
$ ./igrep --help
usage: igrep [-h] -s SEARCH_TERM [-I INCLUDE] [-d DIRECTORY] [-w] [-i] [-v]
optional arguments:
-I INCLUDE, --include INCLUDE
Comma separated file extensions to include
-d DIRECTORY, --directory DIRECTORY
Directory to search
-h, --help show this help message and exit
-w, --whole-word Search whole words only
-i, --ignore-case Ignore case in search
-v, --version show program\'s version number and exit
required named arguments:
-s SEARCH_TERM, --search-term SEARCH_TERM
Term to search
# Search in files with extensions '.c' or '.h' or '.cpp'
$ ./igrep -I "c,h,cpp" -s search_term -d search_directory
# Search a term in current directory
# Default search directory is current directory
$ ./igrep -s search_term
# Search a term ignoring the case
$ ./igrep -i -s search_term -d search_directory
# Search a term where the whole term appears
$ ./igrep -w -s search_term -d search_directory
No installation, just download the script or clone the repository. Provide
execute permissions to the script. The simplest way to use is by adding your igrep
tool path to your $PATH
.
For example, if you've cloned the repository to /home/<username>/Downloads/igrep
# Provide execute permissions
$ chmod +x /home<username>/Downloads/igrep/igrep
# Add the script path to the environment paths
# Add the below line to your ~/.bashrc if you wish to presist the changes on restart
$ export PATH:$PATH:/home/<username>/Downloads/igrep
The tool excludes .svn
, .git
, BUILD
directories and *.swp
and *.o
files from search results by default. Additional option to exclude directories will be added in future
[Q] But we already have these tools, why reinvent the wheel?
[A] Cool, create an issue and let me know the tool
[Q] I can accomplish the same using the readily available find
, grep
, xyz
etc.
There was no need to create this. It's redundant, bulky and not useful
[A] It's useful to me
[Q] There's already another igrep
repository which does much more
[A] That's not a question. Feel free to use it though
[Q] Why don't you upload it to PyPi?
[A] Let's not make this whole thing unnecessarily bulky. Just download the script and use it