Surprisingly, the TAGS and tags index files remain valid even if you insert and delete lines in the files they reference. You really need to run etags/ctags only when you add or remove functions or files. I find it convenient to have a tags: target in my Makefiles for this:
tags: etags $(SRC)
If you have files in many directories, you could generate a single tags file covering them all by specifying directory names on the command line. This works fine in vi and Emacs, but you'll need to set up either the tags-file-name variable or tag-table-alist if you're an XEmacs user. I personally find this pretty clumsy, and tend to stick to a TAGS file per directory.
man etags and man ctags are the obvious starting places. You'll also find good information in the Emacs info pages, and using the Emacs ?H-a command.
ctags and etags are both included in Emacs and XEmacs distributions. You can also get various other tags programs from the Internet—archie -c ctags will find a site near you.
Dave Thomas (email@example.com) is an independent consultant specializing in complex Unix, OS/2 and Windows developments. He's forever grateful for all the work that's gone into Linux and XFree—it lets him work from home in Dallas on client systems in Florida, New Hampshire, Atlanta, Toronto... The phone company is happy too.