Note file actions
Change the file itself instead of a frontmatter property or the title. All text fields accept the full Placeholders set.
Actions
| Action | Effect |
|---|---|
| Rename file | Replaces the entire filename (keeps the extension) with the text you enter. Left empty → skipped, the rest of the rule’s actions still run. |
| Add name prefix | Prepends text to the current filename. Empty text is a no-op. |
| Add name suffix | Appends text to the current filename. Empty text is a no-op. |
| Move file to | Moves the file to a folder path inside the vault. The folder is created automatically if it doesn’t exist. Left empty → skipped. Moving outside the vault isn’t possible — Obsidian’s plugin API has no access beyond the vault sandbox. |
| Delete file | Sends the file to trash using your vault’s configured deletion behavior (system trash, .trash folder, or permanent — whatever you set in Obsidian’s Files & Links settings). |
All of these run through the official Obsidian API: fileManager.renameFile for rename/prefix/suffix/move (so links elsewhere in the vault stay intact), and fileManager.trashFile for delete.
Move file to: auto-creates the destination folder
You never need to pre-create the destination — combine it with a date placeholder to sort files into folders that don’t exist yet:
IF Note file: Filename contains → "transcript"
THEN Note file: Move file to → "transcripts/"
This moves any note whose filename contains transcript into transcripts/YYYY-MM-DD/ (today’s date), creating both transcripts/ and the dated subfolder the first time it runs, and reusing them on later runs the same day. Use instead of for one folder per month.
Bare date placeholders are always date-only here
A bare date placeholder (,, , — no explicit :FORMAT) always resolves to YYYY-MM-DD in these fields, never a time component, regardless of your vault’s configured default date format. An explicit format is always honored exactly as typed, including one with : in it. See Placeholders.
Multiple file actions compose in sequence
Each file action executes immediately, so a later action in the same rule sees the result of an earlier one:
THEN:
- Note file: Add name prefix → "[ARCHIVED] "
- Note file: Move file to → "Archive/"
The file is prefixed first, then the already-renamed file is moved.
Delete stops everything else for that file
If a “Delete file” action runs — in this rule or an earlier one in the same scan — no further actions or rules execute against that file, since it no longer exists.
`` in THEN (Beta)
Reuse whatever your IF regex condition matched — no need to retype the pattern in the THEN action. Available in property values, First level title actions, and Note file actions.
| Placeholder | Resolves to | |—|—| | | The full text matched by the pattern | |, , … | Numbered capture group `(...)` — non-capturing groups `(?:...)` don't count | | | Named capture group, from a pattern written as (?<name>...) |
IF Note file: Filename contains → /\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])/
THEN Note file: Move file to → "transcripts/"
Moves any file whose name contains a date like 2026-08-22 into transcripts/2026-08-22/, auto-creating the folder — no need to duplicate the date pattern on the THEN side.
Named groups work the same way:
IF Note file: Filename contains → /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
THEN Note file: Move file to → "transcripts//"
Current limitations (beta):
- `` reads from the first regex-mode condition (in the order you listed them) that was the reason the rule matched. A rule with multiple conditions doesn’t expose more than one condition’s captures.
- Not supported yet for a Property condition whose value is a list (e.g.
tags) — regex still matches against list items, but there’s no single scalar to pull a capture from. Property (single value), First level title, and Note file (filename) conditions are supported. - Double-brace only (``) — this placeholder has no single-brace form.
- If the rule had no matching regex condition, or you reference a group/name that doesn’t exist in the pattern, `` resolves to an empty string rather than erroring.