78 lines
2.2 KiB
Plaintext
78 lines
2.2 KiB
Plaintext
---
|
|
page_title: fileset - Functions - Configuration Language
|
|
description: The fileset function enumerates a set of regular file names given a pattern.
|
|
---
|
|
|
|
# `fileset` Function
|
|
|
|
`fileset` enumerates a set of regular file names given a path and pattern.
|
|
The path is automatically removed from the resulting set of file names and any
|
|
result still containing path separators always returns forward slash (`/`) as
|
|
the path separator for cross-system compatibility.
|
|
|
|
```hcl
|
|
fileset(path, pattern)
|
|
```
|
|
|
|
Supported pattern matches:
|
|
|
|
- `*` - matches any sequence of non-separator characters
|
|
- `**` - matches any sequence of characters, including separator characters
|
|
- `?` - matches any single non-separator character
|
|
- `{alternative1,...}` - matches a sequence of characters if one of the comma-separated alternatives matches
|
|
- `[CLASS]` - matches any single non-separator character inside a class of characters (see below)
|
|
- `[^CLASS]` - matches any single non-separator character outside a class of characters (see below)
|
|
|
|
Note that the doublestar (`**`) must appear as a path component by itself. A
|
|
pattern such as /path\*\* is invalid and will be treated the same as /path\*, but
|
|
/path\*/\*\* should achieve the desired result.
|
|
|
|
Character classes support the following:
|
|
|
|
- `[abc]` - matches any single character within the set
|
|
- `[a-z]` - matches any single character within the range
|
|
|
|
Functions are evaluated during configuration parsing rather than at apply time,
|
|
so this function can only be used with files that are already present on disk
|
|
before Terraform takes any actions.
|
|
|
|
## Examples
|
|
|
|
```
|
|
> fileset(path.module, "files/*.txt")
|
|
[
|
|
"files/hello.txt",
|
|
"files/world.txt",
|
|
]
|
|
|
|
> fileset(path.module, "files/{hello,world}.txt")
|
|
[
|
|
"files/hello.txt",
|
|
"files/world.txt",
|
|
]
|
|
|
|
> fileset("${path.module}/files", "*")
|
|
[
|
|
"hello.txt",
|
|
"world.txt",
|
|
]
|
|
|
|
> fileset("${path.module}/files", "**")
|
|
[
|
|
"hello.txt",
|
|
"world.txt",
|
|
"subdirectory/anotherfile.txt",
|
|
]
|
|
```
|
|
|
|
A common use of `fileset` is to create one resource instance per matched file, using
|
|
[the `for_each` meta-argument](/language/meta-arguments/for_each):
|
|
|
|
```hcl
|
|
resource "example_thing" "example" {
|
|
for_each = fileset(path.module, "files/*")
|
|
|
|
# other configuration using each.value
|
|
}
|
|
```
|