Pseek is a Python library to search files, folders, and text
Project description
Pseek
Overview
A powerful command-line tool for searching files, directories, and content inside files efficiently. The tool supports searching by name, content, extensions, and more with advanced filtering options.
Features
- Search in file & folder names
- Search inside file contents
- Highlight matches in terminal output
- Optimized for speed with ThreadPoolExecutor
- Support logical expression for search queries
- Search inside archive files (e.g.
zip,rar,7z,gz,bz2,xz,tar,tar.gz,tar.bz2,tar.xz) - Cross-platform (Linux, macOS, Windows)
Installation
1 Install via pip (Recommended)
pip install pseek
2 Install from source
git clone https://github.com/ArianN8610/pysearch.git
cd pysearch
python -m venv venv
[Activate venv]
pip install click==8.1.8 lark==1.2.2 py7zr==1.0.0 rarfile==4.2 rapidfuzz==3.13.0
Usage
Run the command with a search query:
pseek <query> [options]
Examples
Search for a keyword in file & folder names
pseek "my_keyword" --path /path/to/search --file --directory
Search inside file contents
pseek "error" --path /var/logs --content
Search only in specific file types
pseek "TODO" --path ./projects --ext py --ext txt
Search by regex
pseek "error\d+" --regex
Command Options
| Option | Description |
|---|---|
--path |
Base directory to search in (default: current directory .) |
--file |
Search only in file names |
--directory |
Search only in directory names |
--content |
Search inside file contents |
--ext, --exclude-ext |
Filter by file extension (e.g., txt, log) |
--case-sensitive |
Make the search case-sensitive (except when --expr is enabled, in which case you can make it case sensitive by putting c before term: c"foo") |
--regex |
Use regular expressions to search (except when --expr is enabled, in which case you can make it regex by putting r before term: r"foo") |
--include, --exclude |
Limit search results to specific set of directories or files |
--re-include, --re-exclude |
Limit search results to specific directories or files with regex |
--word |
Match the whole word only (except when --expr is enabled, in which case you can make it match whole word by putting w before term: w"foo") |
--expr |
Enable to write conditions in the query. Example: r"foo.*bar" and ("bar" or "baz") and not "qux" (To use regex, word, case-sensitive, and fuzzy features, you can use the prefixes r, w, c, and f before terms. Allowed modes: r, c, w, f, rc, cr, cw, wc, cf, fc, wf, fw, cwf, cfw, wcf, wfc, fcw, fwc. Examples: r"foo.*bar", wcf"Aple", cr".*Foo", ...) |
--timeout |
To stop the search after a specified period of time (Seconds) |
--fuzzy |
Enable fuzzy search (Highlighting and counting matches are disabled in this mode if --word is not enabled to prevent the program from slowing down). except when --expr is enabled, in which case you can make it fuzzy by putting f before term: f"foo" |
--fuzzy_level |
Similarity threshold from 0 to 99 for fuzzy search (default: 80) |
--max-size, --min-size |
Specify maximum and minimum sizes for files and directories |
--archive |
Enable search within archive files (e.g. zip, rar, 7z, gz, bz2, xz, tar, tar.gz, tar.bz2, tar.xz) |
--depth |
Maximum archive depth to recurse into (e.g. 2 means only 2 levels) |
--arc-ext, --arc-ee |
Filter by file extension inside archive files |
--arc-inc, --arc-exc |
Limit search results to specific set of directories or files inside archive files |
--arc-max, --arc-min |
Specify maximum and minimum sizes for files inside archive files (It doesn't work for directories because their size is zero in archive files) |
--rarfb |
Path to RAR backend tool (e.g. UnRAR.exe, ...) |
--full-path |
Display full path of files and directories |
--no-content |
Only display files path for content search |
Requirements
- Python 3.6 or higher
unrar,bsdtar,unaror7zipfor the rarfile library to support searching inside.rarfiles (optional)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pseek-2.5.3.tar.gz
(16.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pseek-2.5.3-py3-none-any.whl
(16.1 kB
view details)
File details
Details for the file pseek-2.5.3.tar.gz.
File metadata
- Download URL: pseek-2.5.3.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9242f3cbc03041736696c227356ae84a1d5805322bac64817ded649889c438a4
|
|
| MD5 |
3b614f63e2a82b746422e9091396809c
|
|
| BLAKE2b-256 |
8ccaf16f1c7d3913e71c4807a3288eb095d84988482c5ae82b13fa37c791abc9
|
File details
Details for the file pseek-2.5.3-py3-none-any.whl.
File metadata
- Download URL: pseek-2.5.3-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40e0e07be39dbe4e0ccab46a155c586c3d18408a046d4573cebcde4b596586fd
|
|
| MD5 |
b8cea19820332be6942bd3346faef4db
|
|
| BLAKE2b-256 |
954d302489296305bba9e7392015216fe2c45d257fc19537fb8dc28eb4a2418e
|