skip to content

eza / exa β€” Modern ls

A modern ls replacement with colour coding, Git status, icons, tree view, and rich metadata. eza is the actively maintained fork of the original exa project.

4 min read 11 snippets 2d ago quick read

eza / exa β€” Modern ls#

Note: exa is no longer maintained. eza is 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:

SymbolMeaning
-Not modified
MModified
NNew (untracked)
AAdded to index
DDeleted
RRenamed
UUpdated but unmerged
IIgnored

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#

ValueSort by
namefilename (default)
sizefile size
modified / datemodification time
accessedaccess time
createdcreation time
inodeinode number
extension / extfile extension
typefile type (dirs first)
nonedirectory 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#

lseza
ls -leza -l
ls -laeza -la
ls -lheza -lh
ls -ltreza -l --sort=modified -r
ls -lSeza -l --sort=size -r
ls --color=alwayseza --colour=always
tree -L 2eza -T --level=2

[!TIP] Install a Nerd Font (e.g. JetBrainsMono Nerd Font) in your terminal emulator to unlock --icons with proper file-type glyphs. Most modern terminals (WezTerm, Kitty, Alacritty) support Nerd Fonts natively.