eza cheat sheet
replaceslsList files with git status, icons, and a built-in tree view.
Basic Display
eza | List current directory as a grid (default) |
eza -1 | One entry per line (oneline view) |
eza -G | Explicit grid view (default; useful to override an alias) |
eza -x | Grid sorted across columns instead of down |
eza -l | Long view: permissions, size, date, owner in a table |
eza -lh | Long view with a header row above each column |
eza --icons=always | Show Nerd Font icons beside every file name |
eza --icons=auto | Show icons only when output is a real terminal (auto-detect) |
eza -F | Append type indicators: / dirs, * executables, @ symlinks |
eza --hyperlink | Render file names as OSC-8 terminal hyperlinks (clickable in supported terminals) |
eza --color=always | Force ANSI colors even when output is piped |
eza --color-scale=size | Use a gradient color to visually rank file sizes |
eza --color-scale=age | Use a gradient color to visually rank file ages |
eza --color-scale-mode=gradient | Smooth gradient for color-scale (default; alternative: fixed) |
eza -w 100 | Force grid to use 100 columns wide |
eza --absolute=on | Print full absolute path for every entry |
eza --absolute=follow | Print absolute path and resolve symlinks to their targets |
eza --no-quotes | Do not add quotes around file names that contain spaces |
Long View: Metadata Columns
eza -l -g | Long view + show group column (omitted by default) |
eza -l --smart-group | Show group only when it differs from the owner |
eza -l -H | Add hard link count column |
eza -l -i | Add inode number column |
eza -l -n | Show numeric UID/GID instead of names |
eza -l -b | Show sizes with binary prefixes (KiB, MiB, GiB) |
eza -l -B | Show raw byte counts, no prefix at all |
eza -l -S | Show allocated filesystem block size instead of logical size |
eza -l --total-size | Show recursive total size for directories (Unix only) |
eza -l -o | Show permissions as octal (e.g. 755) instead of rwxrwxrwx |
eza -l --no-permissions | Hide the permissions column |
eza -l --no-filesize | Hide the file size column |
eza -l --no-user | Hide the user/owner column |
eza -l --no-time | Hide the timestamp column |
eza -l -O | Show macOS/BSD file flags or Windows attributes column |
eza -l -@ | List each file's extended attributes (xattr) and their sizes |
eza -l -Z | List each file's SELinux / security context |
eza -l -M | Show mount point details (Linux and macOS only) |
eza -l -X | Dereference symlinks: show target metadata instead of link metadata |
Timestamps
eza -l -m | Use modified time (default timestamp field) |
eza -l -u | Use accessed time |
eza -l -U | Use created time |
eza -l --changed | Use changed (ctime) timestamp |
eza -l -t modified | Explicitly select which time field to show via --time flag |
eza -l --time-style=relative | Show human-relative times ("3 days ago") |
eza -l --time-style=iso | ISO-8601 short format (2024-05-01) |
eza -l --time-style=long-iso | ISO-8601 with time (2024-05-01 14:30) |
eza -l --time-style=full-iso | Full ISO-8601 with nanoseconds and timezone offset |
eza -l --time-style='+%Y-%m-%d %H:%M' | Custom strftime-style timestamp format |
Tree View
eza -T | Recurse into directories as a tree (like the tree command) |
eza -T -L 2 | Tree view limited to 2 levels deep |
eza -lT | Tree view with full long-view metadata on every entry |
eza -lT -L 3 | Long tree view, 3 levels deep |
eza -T --group-directories-first | Tree view with directories listed before files at each level |
eza -T --git-ignore | Tree view that omits files listed in .gitignore |
eza -T -I 'node_modules|.git' | Tree view ignoring node_modules and .git directories |
eza -T --follow-symlinks | Descend into symlinked directories as if they were real dirs |
Git Integration
eza -l --git | Add a two-character Git status column per file (staged + unstaged) |
eza -l --git --git-ignore | Long view with Git status, hiding .gitignore'd files |
eza -l --git-repos | For each directory, show its Git repo root status (|= clean, += dirty) |
eza -l --git-repos-no-status | Mark Git repos without computing status (much faster on large repos) |
eza -l --no-git | Explicitly suppress Git status even if --git is in an alias |
eza --git-ignore | Filter out files that are ignored by Git (no long view required) |
Filtering
eza -a | Show hidden dot-files |
eza -aa | Show hidden files AND the . and .. entries |
eza -A | Almost-all: hidden files but not . and .. (ls -A compatible) |
eza -D | List only directories |
eza -f | List only files (no directories) |
eza -D --show-symlinks | List only dirs but also include symlinks (use with -D or -f) |
eza --no-symlinks | Hide symbolic links from the listing |
eza -d | Treat directory arguments as files (show metadata about the dir, not its contents) |
eza -I 'pattern1|pattern2' | Ignore files matching any of these pipe-separated glob patterns |
eza --git-ignore | Respect .gitignore — omit any file the repo ignores |
eza -R | Recurse into all subdirectories (flat listing) |
eza -R -L 2 | Recurse up to 2 levels deep |
Sorting
eza -s name | Sort by name, case-insensitive mix (a, A, b, B...) |
eza -s Name | Sort by name, uppercase before lowercase (A, B... a, b...) |
eza -s extension | Sort by file extension |
eza -s size | Sort by file size, smallest first |
eza -s modified | Sort by modification time, oldest first (aliases: date, time, old) |
eza -s new | Sort by modification time, newest first (alias for reverse-modified) |
eza -s accessed | Sort by last-accessed time |
eza -s created | Sort by creation time |
eza -s type | Sort by file type (directories, files, symlinks grouped) |
eza -s inode | Sort by inode number |
eza -s none | No sorting; preserve filesystem order |
eza -r -s size | Reverse sort order: largest files first when sorting by size |
eza --group-directories-first | Always list directories before files, regardless of sort field |
eza --group-directories-last | Always list directories after files |
Stdin and Scripting
eza --stdin | Read file/directory paths from stdin, one per line |
eza --color=always | less -R | Pipe with forced color preserved for less |
EZA_STRICT=1 eza ... | Enable strict mode: error on conflicting options instead of last-wins |
Environment Variables & Configuration
EZA_COLORS='*.rs=36:da=32' | Override file and metadata colors using LS_COLORS-style key=ANSI pairs, colon-separated |
LS_COLORS='di=1;34' | Standard LS_COLORS variable; eza reads it as a fallback when EZA_COLORS is unset |
EZA_ICONS_AUTO=1 | Auto-enable icons globally without passing --icons every time |
EZA_ICON_SPACING=2 | Set number of spaces between icon and filename (tune for your terminal font) |
EZA_GRID_ROWS=10 | Only use grid+long (eza -lG) when at least N rows of output would be shown |
EZA_MIN_LUMINANCE=50 | Set minimum brightness for color-scale gradient (-100 to 100) |
EZA_STDIN_SEPARATOR=':' | Use a custom separator when reading paths from stdin |
EZA_OVERRIDE_GIT=1 | Override any --git or --git-repos argument |
NO_COLOR=1 | Disable all color output (standard NO_COLOR convention; overridable with --color=always) |
COLUMNS=120 | Override terminal width for grid layout (--width takes precedence) |
Killer recipes
Long view with Git status, icons, header, dirs first
eza -lah --icons=always --git --group-directories-first --time-style=relativeThe definitive ls alias for a developer: permissions, sizes (human), relative timestamps, Git status per file, Nerd Font icons, hidden files included, directories on top. Drop into your shell aliases as `ll`.
Interactive file picker piped to bat via fzf
eza -1 --icons=always --color=always | fzf --ansi --preview 'bat --color=always --style=numbers {}'Browse the current directory with icons and colors in fzf, with a live syntax-highlighted preview of each file via bat. Press Enter to select.
Large-file hunt: sorted by size, largest first
eza -lah -s size -r --total-size --color-scale=sizeRecursively-aware size view sorted largest-first, with gradient color scaling to immediately spot the biggest files. Add -R to go recursive across all subdirs.
Project tree respecting .gitignore, limited depth
eza -lT -L 3 --git-ignore --group-directories-first --icons=alwaysPrint a clean project tree 3 levels deep, automatically omitting everything your .gitignore excludes, with dirs first and icons for quick scanning.
Recently modified files, newest on top
eza -lah -s new --time-style=long-isoSort all files (including hidden) by modification time, newest first, with ISO timestamps — fast way to find what changed recently in a directory.
Combine fd + eza for filtered long listing
fd --type f --extension py | eza --stdin -lah --git --icons=alwaysUse fd to find all Python files recursively, then pipe into eza via --stdin for a rich long-view listing with Git status on exactly those files.
Notes & tips
eza, not exa. As of v0.23.4 it ships with git support compiled in ([+git] shown in --version).alias ls='eza --icons=auto --group-directories-first'
alias ll='eza -lah --icons=auto --git --group-directories-first --time-style=relative'
alias lt='eza -lT --icons=auto --git-ignore -L 3'
alias la='eza -lah --icons=auto'Add
EZA_ICONS_AUTO=1 to your shell profile to enable icons globally.--icons renders blank boxes or question marks in terminals not configured with a Nerd Font (e.g. FiraCode Nerd Font, Hack Nerd Font). Install one and set it as your terminal's font.--git adds two characters per file — first is staged status, second is unstaged. Codes: - not modified, M modified, N new, D deleted, R renamed, T type-change, I ignored, U conflicted.--git shows per-file status inside a directory; --git-repos shows the status of directories that are git repos (useful when listing a parent folder of many projects). --git-repos-no-status is much faster and just marks which dirs are repos without computing diff status.EZA_COLORS uses the same key=ANSI format as LS_COLORS (colon-separated). Two-letter codes cover metadata (permissions: ur/uw/ux, git: ga/gm/gd, etc.); file globs like *.rs=36 color by extension. Prepend reset: to disable all built-in defaults.EZA_* env vars are not set, eza falls back to reading EXA_* equivalents for compatibility with old exa configs.=always variants when piping to tools like fzf or less that can handle ANSI (e.g. --color=always | less -R).