+ <b>notmuch</b> <b>tag</b> updates the maildir flags according to tag changes if the
+ <b>maildir.synchronize</b>_<b>flags</b> configuration option is enabled. See <a href='../notmuch-config-1/'>not‐</a>
+ <a href='../notmuch-config-1/'>much-config</a>(1) for details.
+
+ Supported options for <b>tag</b> include
+
+ <b>--remove-all</b>
+ Remove all tags from each message matching the search terms
+ before applying the tag changes appearing on the command
+ line. This means setting the tags of each message to the
+ tags to be added. If there are no tags to be added, the mes‐
+ sages will have no tags.
+
+ <b>--batch</b>
+ Read batch tagging operations from a file (stdin by default).
+ This is more efficient than repeated <b>notmuch</b> <b>tag</b> invocations.
+ See <u>TAG</u> <u>FILE</u> <u>FORMAT</u> below for the input format. This option
+ is not compatible with specifying tagging on the command
+ line.
+
+ <b>--input=<filename></b>
+ Read input from given file, instead of from stdin. Implies
+ <b>--batch</b>.
+</pre>
+
+<h2>TAG FILE FORMAT</h2>
+<pre>
+ The input must consist of lines of the format:
+
+ +<<u>tag</u>>|-<<u>tag</u>> [...] [--] <<u>query</u>>
+
+ Each line is interpreted similarly to <b>notmuch</b> <b>tag</b> command line argu‐
+ ments. The delimiter is one or more spaces ' '. Any characters in <<u>tag</u>>
+ <b>may</b> be hex-encoded with %NN where NN is the hexadecimal value of the
+ character. To hex-encode a character with a multi-byte UTF-8 encoding,
+ hex-encode each byte. Any spaces in <tag> <b>must</b> be hex-encoded as %20.
+ Any characters that are not part of <<u>tag</u>> <b>must</b> <b>not</b> be hex-encoded.
+
+ In the future tag:"tag with spaces" style quoting may be supported for
+ <<u>tag</u>> as well; for this reason all double quote characters in <<u>tag</u>>
+ <b>should</b> be hex-encoded.
+
+ The <<u>query</u>> should be quoted using Xapian boolean term quoting rules:
+ if a term contains whitespace or a close paren or starts with a double
+ quote, it must be enclosed in double quotes (not including any prefix)
+ and double quotes inside the term must be doubled (see below for exam‐
+ ples).
+
+ Leading and trailing space ' ' is ignored. Empty lines and lines begin‐
+ ning with '#' are ignored.
+</pre>
+
+<h3> EXAMPLE</h3>
+<pre>
+ The following shows a valid input to batch tagging. Note that only the
+ isolated '*' acts as a wildcard. Also note the two different quotings
+ of the tag <b>space</b> <b>in</b> <b>tags</b>
+
+ +winner *
+ +foo::bar%25 -- (One and Two) or (One and tag:winner)
+ +found::it -- tag:foo::bar%
+ # ignore this line and the next
+
+ +space%20in%20tags -- Two
+ # add tag '(tags)', among other stunts.
+ +crazy{ +(tags) +&are +#possible\ -- tag:"space in tags"
+ +match*crazy -- tag:crazy{
+ +some_tag -- id:"this is ""nauty)"""