eza / exa β Modern ls#
Note:
exais no longer maintained.ezais the actively maintained fork and drop-in replacement. Both share the same flags.
Installation#
sudo apt install eza # Debian/Ubuntu (24.04+)
sudo dnf install eza # Fedora 39+
brew install eza # macOS / Linux via Homebrew
cargo install eza # via cargo
# Older systems β install exa
sudo apt install exa
Basic listing#
eza # basic list (coloured)
eza -l # long list (like ls -l)
eza -la # long list including hidden files
eza -lh # long list with human-readable sizes
eza -la --sort=size # sort by size
eza -la --sort=modified # sort by modification time
eza -la --sort=ext # sort by extension
eza -la -r # reverse sort
eza -1 # one file per line
eza -x # horizontal grid layout
Metadata columns (-l)#
eza -l --no-permissions # hide permissions column
eza -l --no-filesize # hide file size
eza -l --no-user # hide owner
eza -l --no-time # hide timestamps
eza -l --octal-permissions # show permissions in octal (e.g. 0644)
eza -l --time=modified # show modification time (default)
eza -l --time=accessed # show access time
eza -l --time=created # show creation time (macOS/BSD)
eza -l --time-style=relative # "2 hours ago"
eza -l --time-style=long-iso # "2025-04-24 14:32:00"
eza -l --time-style=full-iso # with nanoseconds
eza -l --inode # show inode number
eza -l --links # show hard link count
eza -l --blocks # show number of filesystem blocks
Hidden files#
eza -a # include hidden (dot) files
eza -A # include hidden, but exclude . and ..
eza -la # long + all
Tree view#
eza --tree # recursive tree (like tree command)
eza --tree --level=2 # limit depth
eza --tree -l # tree with long format
eza --tree --level=3 src/ # tree a specific directory
eza -T # shorthand for --tree
eza -lT --level=2 . # long tree, 2 levels deep
Git integration#
eza -l --git # show Git status per file
eza -l --git --git-repos # show repo status for directories
Git status symbols:
| Symbol | Meaning |
|---|---|
- | Not modified |
M | Modified |
N | New (untracked) |
A | Added to index |
D | Deleted |
R | Renamed |
U | Updated but unmerged |
I | Ignored |
Icons (requires Nerd Font)#
eza --icons # file-type icons
eza -la --icons # long list with icons
eza -T --icons --level=2 # tree with icons
Filtering#
eza -l --only-dirs # directories only
eza -l --only-files # files only (eza 0.17+)
eza -l --no-symlinks # hide symlinks
eza -l -D # shorthand: dirs only
Sorting options#
| Value | Sort by |
|---|---|
name | filename (default) |
size | file size |
modified / date | modification time |
accessed | access time |
created | creation time |
inode | inode number |
extension / ext | file extension |
type | file type (dirs first) |
none | directory order |
eza -la --sort=size -r # largest first
eza -la --sort=modified -r # most recently modified first
eza -la --group-directories-first # dirs before files
Colour and display#
eza --colour=always # force colour (for piping)
eza --colour=never # disable colour
eza --colour=auto # colour only if TTY (default)
eza --colour-scale # gradient colour for file sizes
eza --colour-scale-mode=gradient # or 'fixed'
Aliases to replace ls#
# ~/.bashrc or ~/.zshrc
alias ls='eza --colour=auto'
alias la='eza -la'
alias ll='eza -lh'
alias lt='eza -lT --level=2'
alias lg='eza -la --git'
alias tree='eza -T --level=3'
eza vs ls equivalents#
| ls | eza |
|---|---|
ls -l | eza -l |
ls -la | eza -la |
ls -lh | eza -lh |
ls -ltr | eza -l --sort=modified -r |
ls -lS | eza -l --sort=size -r |
ls --color=always | eza --colour=always |
tree -L 2 | eza -T --level=2 |
[!TIP] Install a Nerd Font (e.g. JetBrainsMono Nerd Font) in your terminal emulator to unlock
--iconswith proper file-type glyphs. Most modern terminals (WezTerm, Kitty, Alacritty) support Nerd Fonts natively.