Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepFind

Release

DeepFind is a high-performance, cross-platform file and archive search engine written in Go. It provides both a blazing-fast Command-Line Interface (CLI) and a modern, interactive web-based dashboard UI.

Features

  • Concurrent Scan: Walks the file system trees concurrently using light-weight goroutines for rapid execution.
  • 📦 Embedded Assets: Web dashboard static assets (HTML, CSS, JavaScript) are compiled directly into the Go executable using go:embed. No installation directories required.
  • 📂 Native Directory Selector: Clicking the browser folder button in the Web UI triggers the local host operating system's native folder selection dialog (AppleScript on macOS, PowerShell on Windows, Zenity/KDialog on Linux) for a seamless native desktop experience.
  • 🗜️ Dynamic Archive Searching:
    • Scans inside Zip-based (.zip, .jar, .war) and Tar-based (.tar, .tgz, .gz, .tar.gz) archives.
    • Allows users to select, deselect, or dynamically add custom archive formats (e.g. mapping .apk to Zip decompression) directly in the UI dashboard.
    • Automatically identifies gzip-compressed tarballs by checking file header magic bytes (0x1f 0x8b), remaining extension-agnostic.
  • 🔍 Flexible Search Syntax: Supports substring matching, wildcard globs, or complete Regular Expressions for both file names and file content.
  • 🎨 Premium Glassmorphic UI: Real-time result updates streamed via Server-Sent Events (SSE), search metric charts, live results filtering, and path clipboard copy buttons.

Getting Started

Installation

Download pre-built binaries for your platform from the Releases tab, or build from source (see below).

Interactive Web UI Mode

Launch the local web server and open the browser dashboard:

# Start on default port 8080 and auto-open dashboard in browser
./deepfind -ui

# Start on a custom port
./deepfind -ui -port 9000

Command-Line Search Mode

You can run queries directly from your terminal:

# General usage
deepfind -name <filename-pattern> -content <text-pattern> [options]

# Example: Search for JSON files containing the word "version"
deepfind -name "*.json" -content "version" -path "/path/to/project"

# Options list
Options:
  -path string
        Directory path to start searching from (default ".")
  -name string
        Filename pattern (glob wildcards like *.json or regex)
  -content string
        Text content to search for inside files
  -archive
        Search inside ZIP, JAR, WAR, and TAR archives (default false)
  -regex
        Interpret filename and content patterns as regular expressions (default false)
  -ignore-case
        Perform case-insensitive matching (default true)
  -export-csv string
        Export search results to CSV file (filename or path)
  -ui
        Launch interactive Web UI dashboard (default false)

|

Export Results as CSV

| Export search results to a CSV file for analysis in spreadsheets or external tools:

# Export results to CSV file
deepfind -name "*.log" -path "/var/log" -export-csv results.csv
|
# Export archive search results
deepfind -name "*.json" -archive -export-csv data.csv -path "/home/user"

| CSV Format: Standard RFC 4180 with 8 columns:

  • path: File system path or archive path
  • is_archive: Whether result is from archive (true/false)
  • archive_path: Parent archive path if nested
  • inner_path: Path within archive if applicable
  • is_content_match: Whether match is content or filename only (true/false)
  • line_number: Line number for content matches
  • line_content: The matching line text
  • error: Error message if result is an error entry

Building from Source

Ensure you have Go installed (version 1.16 or higher).

Compilation Targets

A standard Makefile is provided for compilation task execution:

# Build the native binary for your host OS
make build

# Run unit tests
make test

# Cross-compile stand-alone binaries for macOS (Intel & Apple Silicon), Windows, and Linux
make build-all

The compiled binaries will be output into the dist/ directory.


Repository CI/CD Release Flow

This repository includes a GitHub Actions CI/CD release workflow configured in .github/workflows/release.yml.

Whenever a new version tag is pushed:

  1. All unit tests are run to guarantee stability.
  2. Multiplatform binaries are built for macOS, Windows, and Linux.
  3. A GitHub Release is created automatically with the compiled assets attached.

Triggering a Release

To publish a new version:

# 1. Create and annotate a git tag
git tag -a v1.0.0 -m "Release version 1.0.0"

# 2. Push tag to remote
git push origin v1.0.0

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

High-performance, concurrent file and archive search engine in Go with a glassmorphic web dashboard UI & CLI.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages