A modern, maintained replacement for ls written in Rust. Successor to the now-unmaintained exa, with all its features plus ongoing improvements, Git awareness, icons, and rich color output.
| Platform | Command |
|---|
| Ubuntu/Debian | sudo apt install eza |
| Arch Linux | sudo pacman -S eza |
| Fedora/RHEL | sudo dnf install eza |
| macOS (Homebrew) | brew install eza |
| Windows (Scoop) | scoop install eza |
| Windows (Chocolatey) | choco install eza |
| Windows (Winget) | winget install eza-community.eza |
| Cargo (All platforms) | cargo install eza |
| Nix | nix run github:eza-community/eza |
| FreeBSD | pkg install eza |
Tip: If migrating from exa, eza is a drop-in replacement — same flags, same behavior.
| Command | Description |
|---|
eza | List files in current directory (grid layout) |
eza -l | Long format with permissions, size, date |
eza -la | Long format including hidden files |
eza -1 | One file per line |
eza -lh | Long format with column headers |
eza -lr | Long format, reverse sort order |
eza -ls size | Sort by file size |
eza -ls date | Sort by modification date |
eza -ls name | Sort alphabetically by name |
eza -ls ext | Sort by file extension |
eza -lR | Recursively list all subdirectories |
eza -T | Tree view of directory structure |
eza -T -L 2 | Tree view limited to 2 levels deep |
eza -D | Show only directories |
eza -f | Show only files |
eza --icons | Display file type icons |
eza --icons -l | Long format with icons |
| Command | Description |
|---|
eza -x | Sort grid across (left-to-right) instead of down |
eza -F | Append file type indicators (/ for dirs, @ for links) |
eza --color=always | Force color output (useful when piping) |
eza --color=never | Disable colors |
eza --no-icons | Disable icon display |
eza --hyperlink | Display entries as clickable terminal hyperlinks |
eza --absolute | Show absolute paths |
eza -w 80 | Set output width to 80 columns |
eza --group-directories-first | List directories before files |
eza --group-directories-last | List directories after files |
eza --no-quotes | Don’t quote filenames with spaces |
| Command | Description |
|---|
eza -a | Show hidden files (dotfiles) |
eza -d */ | List only directories (glob) |
eza -I "*.log" | Ignore files matching pattern |
eza -I "node_modules|.git" | Ignore multiple patterns |
eza --git-ignore | Respect .gitignore rules |
eza -s modified | Sort by modification time |
eza -s accessed | Sort by access time |
eza -s created | Sort by creation time |
eza -s type | Sort by file type |
eza -s none | No sorting (directory order) |
eza -rs size | Reverse sort by size (smallest first) |
eza --no-symlinks | Hide symbolic links |
| Command | Description |
|---|
eza -l --git | Show Git status for each file |
eza -l --git-repos | Show Git repo status in directories |
eza -lb | Show file sizes with binary prefixes (KiB, MiB) |
eza -lB | Show sizes in bytes only |
eza -lg | Show group ownership |
eza -li | Show inode numbers |
eza -lH | Show hard link count |
eza -lm | Use modified timestamp (default) |
eza -lu | Use accessed timestamp |
eza -lU | Use created timestamp |
eza -l --time-style=long-iso | ISO format timestamps |
eza -l --time-style=relative | Show relative times (e.g., “2 hours ago”) |
eza -lo | Show octal permissions (e.g., 755) |
eza -l@ | Show extended attributes |
eza -lZ | Show SELinux security context |
eza -l --total-size | Show total size of directories (recursive) |
eza -lS | Show block size |
eza -lM | Show mount point details |
| Command | Description |
|---|
eza -l --git | Show per-file Git status (N=new, M=modified) |
eza -l --git-repos | Show repository status for directories |
eza --git-ignore | Hide files listed in .gitignore |
eza -l --git --no-git | Disable Git markers in long view |
Git status indicators: N = new/untracked, M = modified, - = unchanged
| Command | Description |
|---|
eza -T | Full recursive tree view |
eza -T -L 3 | Tree limited to 3 levels |
eza -Tl | Tree view with long details |
eza -T --icons | Tree with icons |
eza -T --git-ignore | Tree ignoring .gitignore files |
eza -T -I "node_modules" | Tree ignoring specific directories |
eza -T --no-symlinks | Tree without following symlinks |
Create ~/.config/eza/theme.yml to customize colors and icons:
# Example theme.yml
filenames:
Makefile:
icon: {glyph: "🔨"}
Dockerfile:
icon: {glyph: "🐳"}
extensions:
rs:
icon: {glyph: "🦀"}
filename: {foreground: Red}
| Variable | Description |
|---|
EZA_CONFIG_DIR | Override config directory (default: $XDG_CONFIG_HOME/eza) |
EZA_COLORS | Custom color definitions (same as LS_COLORS format) |
NO_COLOR | Disable all colors when set |
COLUMNS | Override detected terminal width |
# Add to ~/.bashrc, ~/.zshrc, or equivalent
alias ls='eza'
alias ll='eza -l --icons --git'
alias la='eza -la --icons --git'
alias lt='eza -T --icons -L 2'
alias l='eza -1'
# Quick overview of a project directory
eza -la --icons --git --group-directories-first
# Find large files sorted by size
eza -l --total-size -rs size
# Preview directory tree for documentation
eza -T --icons -L 3 -I "node_modules|.git|dist"
# Check Git status of all files at a glance
eza -l --git --git-repos
# Export file listing without colors (for scripts)
eza --color=never -1
| Feature | ls | eza |
|---|
| Colors | Basic (via --color) | Rich defaults, theme support |
| Icons | No | Yes (--icons) |
| Git status | No | Yes (--git) |
| Tree view | No (use tree) | Built-in (-T) |
| Hyperlinks | No | Yes (--hyperlink) |
| Speed | Fast | Fast (Rust) |
| Config | LS_COLORS | theme.yml + LS_COLORS |