Is there a way, to bulk update the front matter metadata from multiple notes? I have either a list of notes or some search criteria (like tags or keywords) where I want to change the metadata.
Things I have tried
- Replacing single tags like “#foo with #bar” using grep and sed
- Renaming fields with grep and sed
What I’m trying to do
- Add tags
- Remove specific tags
- Add a field
- Update field to a specific value
- Update field with current time
The Tag Wrangler plugin can rename the tags. It can’t remove them, but if you don’t mind a little hackiness you could rename tags you want to delete to something like “deletedtag”.
Note (because of your example) that you need to leave off the “#” when putting tags in the front matter, because that symbol marks comments in YAML.
I don’t know of a way to bulk change the other fields, but there might be a plugin.
If you can use python : py-obsidianmd is a python library that enables you to do just that, in a couple of lines of code.
You can check out the presentation video, github repository or examples.
In your case, you’d do something like this:
from pyomd import Notes
from pathlib import Path
from pyomd.metadata import MetadataType
paths = Path('/path/to/directory/containing/notes/')
# create a notes object
notes = Notes(paths)
# perform additions / removals of metadata
notes.metadata.add(k="meta_key_to_change", l=["new_val1", "new_val2"], meta_type=MetadataType.FRONTMATTER)
notes.metadata.remove(k="meta_key_to_change", l=["remove_val1", "remove_val2"], meta_type=MetadataType.FRONTMATTER)
# update your notes
Be careful to backup your vault before trying this. Batch modifications are always a bit risky.