Modern Unix Tools: The 2026 Replacements for cat, grep, find, and More

bat, ripgrep, fd, delta, dust, procs, zoxide, and eza replace the classic Unix tools with better output, faster performance, and sensible defaults.

Mahmudul Haque Qudrati — CEO & ML Engineer at Pristren

Mahmudul Haque Qudrati

CEO & ML Engineer

May 17, 2026
10 min read
Modern Unix Tools: The 2026 Replacements for cat, grep, find, and More

The classic Unix tools - cat, grep, find, du, ps, cd, ls - are reliable, available everywhere, and haven't changed meaningfully in decades. The modern replacements are faster, produce better output, and have sane defaults that make them more useful in a development workflow. None of them require you to abandon the originals - they install alongside them and you alias as needed.

Why These Tools Matter for Developers

One AI engineering post, weekly

LLM benchmarks, prompt techniques, and token-cost breakdowns — not another AI news roundup.

Beyond personal ergonomics, these tools matter for one practical reason: speed. ripgrep is 10 to 100 times faster than grep for searching codebases. When you're searching a 50,000-file monorepo, the difference between 200ms and 15 seconds is not academic. More relevantly, AI coding tools like Claude Code and Cursor use ripgrep internally for codebase search. Understanding the tool helps you understand why codebase search behaves the way it does.

bat: Better cat

bat is cat with syntax highlighting, line numbers, and git integration showing changed lines.

Install:

brew install bat           # macOS
sudo apt install bat       # Ubuntu/Debian (installs as batcat)
cargo install bat          # Any platform with Rust

What it adds over cat:

  • Syntax highlighting for every major language
  • Line numbers by default
  • Git diff markers showing added/modified lines
  • Automatic paging for long files (less-style navigation)
  • Works as a drop-in for cat in pipelines with --plain flag
bat src/auth/middleware.ts          # Highlighted TypeScript
bat -n src/config.json              # Just line numbers, no paging
cat file.ts | bat -l typescript     # Syntax hint in a pipeline

Configure bat in ~/.config/bat/config:

--theme="Catppuccin-mocha"
--style="numbers,changes,header"

Team workspace

Ship faster with chat, meetings, and projects in one place — Zlyqor.

Start free

ripgrep: Better grep

ripgrep (command: rg) searches file contents. It is faster than grep in virtually every practical scenario, respects .gitignore by default, and produces color-coded output with filename and line number context.

Install:

brew install ripgrep
sudo apt install ripgrep
cargo install ripgrep

Usage:

rg "getUserById"                    # Search current directory recursively
rg "getUserById" src/               # Search specific directory
rg -t ts "getUserById"              # Search only TypeScript files
rg -l "TODO"                        # List files containing match (not lines)
rg -i "error"                       # Case-insensitive
rg --no-ignore "node_modules"       # Search ignored directories too
rg -A 3 -B 3 "throw new Error"      # Show 3 lines before and after

Why it's faster than grep: ripgrep uses SIMD instructions, processes multiple files in parallel threads, and skips binary files and version control directories automatically. On a large codebase, rg completes in under a second where grep -r takes 30+ seconds.

fd: Better find

fd finds files. It's simpler to use than find, faster, and respects .gitignore.

Install:

brew install fd
sudo apt install fd-find           # Ubuntu (command is fdfind, alias to fd)
cargo install fd-find

Usage:

fd middleware                       # Find files with "middleware" in name
fd -e ts                           # Find all TypeScript files
fd -e ts -x bat {}                 # Find all .ts files and display with bat
fd "route.ts" src/                 # Search in specific directory
fd -H ".env"                      # Include hidden files
fd --changed-within 1d             # Files changed in the last day

Compare with the find equivalent for the last one: find . -mtime -1 -name "*.ts". fd is consistently less verbose for common operations.

delta: Better git diff

delta is a pager for git diff, git log, and git show. It adds syntax highlighting, side-by-side diffs, and line numbers.

Install:

brew install git-delta
cargo install git-delta

Configure git to use delta:

git config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.light false
git config --global delta.side-by-side true

After configuring, git diff, git log -p, and git show all use delta automatically. The side-by-side view is particularly useful for reviewing what changed in a file - removed lines on the left, new lines on the right, both syntax-highlighted.

dust: Better du

dust shows disk usage as a tree with a bar chart. Where du -sh * produces a flat list, dust shows the tree structure so you can see which subdirectory is actually consuming space.

Install:

brew install dust
cargo install du-dust

Usage:

dust                               # Current directory
dust -n 20                         # Show top 20 entries
dust /var/log                      # Specific path

procs: Better ps

procs lists running processes with color, sorted by CPU or memory, and makes process names readable.

Install:

brew install procs
cargo install procs

Usage:

procs                              # All processes, sorted by CPU
procs node                         # Filter by name
procs --sortd cpu                  # Sort by CPU descending

zoxide: Better cd

zoxide learns which directories you visit and lets you jump to them by partial name from anywhere.

Install:

brew install zoxide
cargo install zoxide

Shell integration (add to ~/.zshrc or ~/.bashrc):

eval "$(zoxide init zsh)"          # or bash, fish

Usage:

z projects                         # Jump to a directory with "projects" in path
z web                              # Jump to the most-visited directory matching "web"
zi                                 # Interactive selection with fzf

After a few days, z proj gets you to /Users/you/code/mycompany/projects/main-app without typing the full path.

eza: Better ls

eza (fork of the abandoned exa) is a modern ls with color, git integration, and tree view.

Install:

brew install eza
cargo install eza

Useful aliases for ~/.zshrc:

alias ls="eza"
alias ll="eza -l --git"
alias la="eza -la --git"
alias lt="eza --tree --level=2"

eza -l --git shows file permissions, owner, size, date, and git status (new, modified, ignored) in one clean column output.

Install Everything at Once

macOS (Homebrew):

brew install bat ripgrep fd git-delta dust procs zoxide eza

Cargo (any platform with Rust):

cargo install bat ripgrep fd-find git-delta du-dust procs zoxide eza

Add aliases to ~/.zshrc:

alias cat="bat"
alias grep="rg"
alias find="fd"
alias ls="eza"
alias ll="eza -l --git"
alias cd="z"

The aliases are optional - you can run both the old and new tools side by side and alias gradually.

Keep Reading


Pristren builds AI-powered software for teams. Zlyqor is our all-in-one workspace - chat, projects, time tracking, AI meeting summaries, and invoicing - in one tool. Try it free.

#unix-tools#terminal#ripgrep#bat#developer-tools

// discussion

Comments

0/4000
Mahmudul Haque Qudrati — CEO & ML Engineer at Pristren

Mahmudul Haque Qudrati

CEO & ML Engineer

Visionary technologist, software engineer, and machine learning specialist. Founder and CEO of Pristren, directing engineering teams that ship production-grade AI/ML pipelines, mission-critical full-stack applications, and developer tooling. Creator of Zlyqor, the unified team workspace platform. Author of 540+ technical guides and benchmark research reports on large language models, agentic workflows, Model Context Protocol (MCP), and modern web stacks.

PristrenZlyqor