Using lla
Machine output
Print listings as JSON, NDJSON or CSV for scripts and pipelines, with fixed fields and typed plugin data.
These flags replace the human-readable view with data for scripts. Paths, filters, sorting, depth and archive handling all work as usual.
lla --json # one JSON array
lla --json --pretty # the same, indented
lla --ndjson # one JSON object per line
lla --csv # a header row, then data rowsThe three formats are mutually exclusive.
- --jsonone arrayjq
- --ndjsonone object a lineduckdb
- --csvfixed columnsyour script
JSON and NDJSON fields
lla Cargo.toml --json --pretty | head -25{
"path": "Cargo.toml",
"name": "Cargo.toml",
"extension": "toml",
"file_type": "file",
"size_bytes": 1379,
"modified": "2026-10-30T22:28:00Z",
"created": "2026-10-07T15:26:54Z",
"accessed": "2026-10-30T22:28:00Z",
"mode_octal": "0644",
"owner_user": "you",
"owner_group": "staff",
"inode": 262,
"hard_links": 1,
"allocated_size_bytes": 4096,
"xattrs": {},
"has_acl": false,
"security_context": null,
"mount_point": "/",
"mount_source": "/dev/disk3s1",
"filesystem": "apfs",
"symlink_target": null,
"is_hidden": false,
"git_status": null,
"plugin": {}
}file_type is file, dir, symlink or other. extension, timestamps other than modified, ownership, filesystem metadata, symlink_target and git_status can be null. plugin holds the fields from your enabled plugins.
For example, to print the ten entries with the largest sizes:
lla --json -s size | jq -r '.[:10][] | [.size_bytes, .name] | @tsv'jq.CSV columns
CSV uses a fixed column order and doesn't include plugin fields:
path,name,extension,file_type,size_bytes,modified,created,accessed,mode_octal,owner_user,owner_group,inode,hard_links,allocated_size_bytes,xattrs,has_acl,security_context,mount_point,mount_source,filesystem,symlink_target,is_hidden,git_statusSearch results
--search has its own output format, which differs from the listings above.
lla --search "TODO" --json
lla --search "TODO" --ndjson
lla --search "TODO" --csvBoth --json and --ndjson pass through ripgrep's stream of JSON events, one per line, with types such as begin, context, match, end and summary. It isn't a single array, and --pretty has no effect on it.
{"type":"begin","data":{"path":{"text":"./lla/src/commands/search.rs"}}}--csv prints one row per collected line under these columns:
file,line,column,kind,textPlugin actions
Plugin actions have their own output modes, set with --output. See Run an action.