Using lla
Filtering and search
Sort entries, select them by name, size, date, type or Git rules, save presets, and search file contents.
↓ on this page
Filters choose which entries appear in a listing, and they work with every view. To find text inside files, use content search, which has its own rules.
- all entries
- --filtername
- --files-onlytype
- --sizebytes
- --modifiedtime
- viewany of ten
Sort
lla -s size
lla -s date -r
lla --sort-dirs-first
lla --sort-natural
lla --sort-case-sensitive-s, --sort takes name, size or date. -r, --sort-reverse flips the order. --sort-natural puts 2.txt before 10.txt.
Filter by name
-f, --filter matches anywhere in the name.
lla -f test
lla -f .rs
lla -f "regex:^(cargo|flake|install)"
lla -f "glob:*.toml"lla -f "regex:^(cargo|flake|install)" -l --hide-groupWrite patterns in lowercase. lla lowercases each file name before comparing it to your pattern, but not the pattern itself, so -f readme finds README.md and -f README finds nothing. To match exact case, add -c, --case-sensitive.
To combine terms, use one of these forms:
| Form | Matches names containing |
|---|---|
test,spec | test or spec |
+test,api | test and api |
"test AND .rs" | test and the .rs extension |
".toml OR .lock" | Either extension |
"NOT .md" | Anything except .md files |
Filter by size
lla --size ">10M"
lla --size "512K..2G"
lla --size "..100K"Sizes take K, M and G suffixes, and ranges can be open at either end.
Filter by date
--modified and --created take a relative age or a date range:
lla --modified ">7d"
lla --modified "<30d"
lla --created "2026-01-01..2026-06-30"Combine filters to get a precise selection, then sort it:
lla --files-only --size ">2K" --modified ">30d" -s size -l --hide-groupFilter by type
| Show only | Hide |
|---|---|
--dirs-only | --no-dirs |
--files-only | --no-files |
--symlinks-only | --no-symlinks |
--dotfiles-only | --no-dotfiles |
--show-symlinks also includes symlinks whose targets match --dirs-only or --files-only. -a, --all and -A, --almost-all show dotfiles even if your config hides them.
Respect .gitignore
--respect-gitignore hides anything matched by .gitignore or Git's exclude rules. To make that the default, add this to your config:
[filter]
respect_gitignore = true--no-gitignore turns it off again for one run.
Presets
A preset saves a set of filters under a name. Define it in ~/.config/lla/config.toml:
[filter.presets.recent_rust]
description = "Rust files changed in the last week"
filter = ".rs"
modified = ">7d"lla --preset recent_rustRefine a listing
--refine narrows a listing you've already run. It reads lla's cached copy of that listing instead of walking the directory again. Repeat the flag to narrow further, and an entry must match every refinement to stay.
lla -l --refine cargo --refine .tomllla caches each directory listing under the directory and options you used. If there's no match in the cache, --refine walks the directory first. Because a cached listing can be out of date, run the command without --refine to refresh it.
Search file contents
--search runs ripgrep from the current directory. It prints each match with its path, line number, syntax highlighting and two lines of context. Patterns are literal unless you prefix them with regex:.
lla --search "TODO"
lla --search "TODO" --search-context 5
lla --search "regex:^func.*\("
lla --search "Error" --case-sensitivella --search "record_visit" --search-context 1To search another directory, change into it or give an absolute path:
lla "$(pwd)/src" --search "TODO"Which filters apply to search
| Option | During search |
|---|---|
-c, --case-sensitive | Applied |
--no-dotfiles, -A | Applied |
--dirs-only, --no-files | Return no results, since ripgrep only reads files |
--no-gitignore | Ignored. Search always applies Git ignore rules |
-f, --preset, size, date, --refine, other type filters | Ignored |
If your config shows dotfiles, search also reads .git/. Add --no-dotfiles to skip it.
exclude_paths from your config only matches reliably when the search root is absolute.
For --json, --ndjson and --csv, see search results.
Send matches to a plugin
--search-pipe runs a plugin action once when the search finishes, adding every matching path to the action's arguments. The form is plugin:action[:arg...]. It turns on the plugin if it's off.
lla --search "setup_shell_integration" --search-pipe preview:showThe action has to accept that many paths. preview show takes one, so the command above only works when one file matches. Among the official plugins, only trash put takes any number of paths, and it moves every match to the trash.