> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# fileListDir

> Lists the files and directories in the specified path, with optional recursion and filtering by mask or entry type.

Lists the files and directories in the specified path.

## Required Parameters

* **path**: The fully qualified path whose directories and files will be listed (for example, `/tmp/mydirectory`).

## Optional Parameters

* **mask**: The pattern to use for filtering the result entries. The default is `*`. For example, a mask of `*.json` matches all files with a `.json` extension.
* **recurse**: Whether to list entries recursively. The allowed values are `false` and `true`. The default is `false`.
* **fileordir**: Whether to list only files or directories. The allowed values are `all`, `files`, and `dirs`. The default is `all`.

## Output Attributes

* **file:fullname**: The full path of the file or directory in the current entry.
* **file:name**: The name of the file or directory in the current entry.
* **file:mtime**: The time at which the file or directory in the current entry was written to.
* **file:ctime**: The time at which the file or directory in the current entry was created.
* **file:atime**: The time at which the file or directory in the current entry was last read from or written to.
* **file:attributes**: A list of attributes of the file or directory in the current entry.
* **file:extension**: The extension of the file in the current entry.
* **file:size**: The size of the file in bytes.
* **file:isdir**: Whether the entry is a file or directory.

## Example

```xml theme={null}
<!-- Setting the path to monitor on the input item -->
<arc:set attr="input.path" value="/tmp/timesensitive" />
<!-- Enabling recursion to check all subdirectories within the input path -->
<arc:set attr="input.recurse" value="true" />
<!-- Checking for files only, across all directories found by the operation -->
<arc:set attr="input.fileordir" value="files" />
<!-- Calling the operation and passing in the input item and setting an output item -->
<arc:call op="fileListDir" in="input" out="result" >
  <!-- Executing an expression that checks each file creation date in each directory -->
  <arc:if exp="[result.file:ctime | dateadd('day', 1) | datediff | lessthan(0)]" >
    <!-- If it is older than 1 day, log an entry in the application log -->
    <!-- This can be expanded to add more logic such as sending an email using appSendEmail -->
    <arc:set attr="_log.info" value="The file [result.file:name] located at [result.file:fullname] has been idle within [input.path] for longer than 1 day." />
  </arc:if>
</arc:call>
```
