| `RECURSIVE` | Flag | Include files in subdirectories |
---
## Description
`LIST` returns an array of file and directory information from the specified path in the bot's storage. Each item in the result includes metadata such as name, size, type, and modification date.
Use cases include:
- Browsing user uploads
- Finding files matching patterns
- Checking if files exist
- Building file inventories
- Processing batches of files
---
## Examples
### Basic Directory Listing
```basic
' List all files in a directory
files = LIST "documents/"
FOR EACH file IN files
TALK file.name + " (" + file.size + " bytes)"
NEXT
```
### Filter by Extension
```basic
' List only PDF files
pdfs = LIST "documents/" FILTER "*.pdf"
TALK "Found " + LEN(pdfs) + " PDF files"
FOR EACH pdf IN pdfs
TALK "- " + pdf.name
NEXT
```
### Recursive Listing
```basic
' List all files including subdirectories
all_files = LIST "uploads/" RECURSIVE
TALK "Total files: " + LEN(all_files)
```
### Check File Exists
```basic
' Check if a specific file exists
files = LIST "reports/"
found = false
FOR EACH file IN files
IF file.name = "monthly-report.pdf" THEN
found = true
EXIT FOR
END IF
NEXT
IF found THEN
TALK "Report found!"
ELSE
TALK "Report not found. Would you like me to generate one?"
END IF
```
### Find Recent Files
```basic
' List files modified in last 24 hours
files = LIST "inbox/"
yesterday = DATEADD(NOW(), -1, "day")
recent = FILTER files WHERE modified > yesterday
TALK "You have " + LEN(recent) + " new files since yesterday"
- [UPLOAD](keyword-upload.md) — Upload files to storage
---
## Summary
`LIST` retrieves directory contents from storage, returning detailed metadata about each file and subdirectory. Use it to browse files, find matching documents, check existence, calculate sizes, and process batches of files. Filter patterns and recursive options help narrow results to exactly what you need.