You can use metaflac to add lyrics as well. Assume that the lyrics to "Tomorrow Never Knows" are in file "2-06.lyrics":
$ ls
'Grateful Dead -- 2-06 - Tomorrow Never Knows.flac' 2-06.lyrics
$ metaflac --remove-tag="Lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ metaflac --set-tag-from-file="Lyrics=2-06.lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ metaflac --show-tag="Lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" |more
Lyrics=Turn off your mind, relax
and float down stream
--More--
If you want to paste the lyrics into the terminal via STDIN (e.g., after a web search) followed by [CTRL-D]:
$ metaflac --set-tag="Lyrics=$(cat -)" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
[paste lyrics]
^D
NB: You can do this in ffmpeg too.
To read from file 2-06.lyrics:
$ ffmpeg -y -i "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" -codec copy -metadata "Lyrics=$(cat lyrics)" "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ mv "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
If you want to paste the lyrics into the terminal via STDIN followed by [CTRL-D]:
$ ffmpeg -y -i "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" -codec copy -metadata "Lyrics=$(cat -)" "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
[paste lyrics]
^D
$ mv "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
If you wanted to tag an entire directory, you could put that in a for loop:
$ for f in *flac; do metaflac --remove-tag="Lyrics"; printf 'Paste lyrics for %s followed by Control-D:\n' "$f"; metaflac --set-tag="Lyrics=$(cat -)" "$f"; done