2020-11-20 12:08:12 +00:00
File operators are most often used with merge when needing to merge specific files together. Note that when doing this, you will need to use `eval-all` to ensure all yaml documents are loaded into memory before performing the merge (as opposed to `eval` which runs the expression once per document).
2020-11-20 11:57:32 +00:00
2021-01-01 23:49:33 +00:00
Note that the `fileIndex` operator has a short alias of `fi` .
2020-11-22 02:16:54 +00:00
## Merging files
Note the use of eval-all to ensure all documents are loaded into memory.
2020-11-20 11:57:32 +00:00
```bash
2021-01-01 23:49:33 +00:00
yq eval-all 'select(fi == 0) * select(filename == "file2.yaml")' file1.yaml file2.yaml
2020-11-20 11:57:32 +00:00
```
2020-11-22 02:16:54 +00:00
## Get filename
2020-11-20 11:57:32 +00:00
Given a sample.yml file of:
```yaml
2020-11-20 12:08:12 +00:00
a: cat
2020-11-20 11:57:32 +00:00
```
then
```bash
yq eval 'filename' sample.yml
```
will output
```yaml
2021-01-01 23:27:32 +00:00
sample.yml
2020-11-20 11:57:32 +00:00
```
2020-11-22 02:16:54 +00:00
## Get file index
2020-11-20 11:57:32 +00:00
Given a sample.yml file of:
```yaml
2020-11-20 12:08:12 +00:00
a: cat
2020-11-20 11:57:32 +00:00
```
then
```bash
yq eval 'fileIndex' sample.yml
```
will output
```yaml
2020-11-22 00:56:28 +00:00
0
2020-11-20 11:57:32 +00:00
```
2021-02-15 06:31:12 +00:00
## Get file indices of multiple documents
Given a sample.yml file of:
```yaml
a: cat
```
And another sample another.yml file of:
```yaml
a: cat
```
then
```bash
yq eval-all 'fileIndex' sample.yml another.yml
```
will output
```yaml
0
---
1
```
2021-01-01 23:49:33 +00:00
## Get file index alias
Given a sample.yml file of:
```yaml
a: cat
```
then
```bash
yq eval 'fi' sample.yml
```
will output
```yaml
0
```