FreeBSD Manual Pages
MU CFIND(1) General Commands Manual MU CFIND(1) NAME mu-cfind - find contacts in the mu database and export them for use in other programs. SYNOPSIS mu [COMMON-OPTIONS] cfind [OPTIONS] [PATTERN] DESCRIPTION mu cfind is the mu command for finding contacts (name and e-mail ad- dress of people who were either an e-mail's sender or receiver). Dif- ferent output formats are available, e.g., for importing the contacts into other programs. SEARCHING CONTACTS When you index your messages (see mu index), mu creates a list of unique e-mail addresses found and the accompanying name, and caches this list. If the same e-mail address is used with different names, the most recent non-empty name is used. If that is not the desired name, see CORRECTING below. mu cfind starts a search for contacts that match a regular expression. For example: $ mu cfind '@gmail\.com' finds all contacts with a gmail-address, while $ mu cfind Mary lists all contacts with Mary in either name or e-mail address. If you do not specify a search expression, mu cfind returns the full list of contacts. mu cfind uses a cache with the e-mail information, which is populated during the indexing process. The regular expressions are basic case-insensitive PCRE, see pcre(3). CFIND OPTIONS --format plain|mutt-alias|mutt-ab|wl|org-contact|bbdb|csv Sets the output format to the given value. The following are available: +-------------------------------------------------+ | --format= description | +-------------------------------------------------+ | plain default, simple list | | mutt-alias mutt alias-format | | mutt-ab mutt external address book format | | wl wanderlust address book format | | org-contact org-mode org-contact format | | bbdb BBDB format | | csv comma-separated values [1] | | json JSON format | +-------------------------------------------------+ [1] CSV is not fully standardized, but mu cfind follows some common practices: any double-quote is replaced by a double-double quote (thus, "hello" become ""hello"", and fields with commas are put in double- quotes. Normally, this should only apply to name fields. -p, --personal Only show addresses seen in messages where at least one of personal e- mail addresses was seen in any of the address fields; this is to ex- clude addresses only seen in mailing-list messages. See the --personal- address parameter to mu init for specifying your personal e-mail ad- dresses. --after timestamp Only show addresses last seen after timestamp. timestamp is a UNIX time_t value, the number of seconds since 1970-01-01 (in UTC). From the command line, you can use the date command to get this value. For example, only consider addresses last seen after 2020-06-01, you could specify --after=$(date +%s --date='2020-06-01') --muhome Use a non-default directory to store and read the database, write the logs, etc. By default, mu uses the XDG Base Directory Specification (e.g. on GNU/Linux this defaults to ~/.cache/mu and ~/.config/mu). Ear- lier versions of mu defaulted to ~/.mu, which now requires --muhome=~/.mu. The environment variable MUHOME can be used as an alternative to --muhome. The latter has precedence. COMMON OPTIONS -d, --debug Makes mu generate extra debug information, useful for debugging the program itself. Debug information goes to the standard logging loca- tion; see mu(1). -q, --quiet Causes mu not to output informational messages and progress information to standard output, but only to the log file. Error messages will still be sent to standard error. Note that mu index is much faster with --quiet, so it is recommended you use this option when using mu from scripts etc. --log-stderr Causes mu to not output log messages to standard error, in addition to sending them to the standard logging location. --nocolor Do not use ANSI colors. The environment variable NO_COLOR can be used as an alternative to --nocolor. -V, --version Prints mu version and copyright information. -h, --help Lists the various command line options. JSON FORMAT With --format=json, the matching contacts come out as a JSON array, e.g., [ { "email" : "syb@example.com", "name" : "Sybil Gerard", "display" : "Sybil Gerard <syb@example.com>", "last-seen" : 1075982687, "last-seen-iso" : "2004-02-05T14:04:47Z", "personal" : false, "frequency" : 14 }, { "email" : "ed@example.com", "name" : "Mallory, Edward", "display" : "\"Mallory, Edward\" <ed@example.com>", "last-seen" : 1425991805, "last-seen-iso" : "2015-03-10T14:50:05Z", "personal" : true, "frequency" : 2 } ] Each contact has the following fields: +------------------------------------------------------------------------------------------+ | property description | +------------------------------------------------------------------------------------------+ | email the email-address | | name the name (or none) | | display the combination name and e-mail address for display purposes | | last-seen date of most recent message with this contact (Unix time) | | last-seen-iso last-seen represented as an ISO-8601 timestamp | | personal whether the email was seen in a message together with a personal address | | frequency approximation of the number of times this contact was seen in messages | +------------------------------------------------------------------------------------------+ The JSON format is useful for further processing, e.g. using the jq(1) tool: List display names, sorted by their last-seen date: $ mu cfind --format=json --personal | jq -r '.[] | ."last-seen-iso" + " " + .display' | sort INTEGRATION WITH MUTT You can use mu cfind as an external address book server for mutt. For this to work, add the following to your muttrc: set query_command = "mu cfind --format=mutt-ab '%s'" Now, in mutt, you can search for e-mail addresses using the query-com- mand, which is (by default) accessible by pressing Q. ENCODING mu cfind output is encoded according to the current locale except for --format=bbdb. This is hard-coded to UTF-8, and as such specified in the output-file, so emacs/bbdb can handle things correctly, without guessing. CORRECTING If you want to correct the name for a given contact, one trick is to manual create an e-mail message with some future date that has all the correct name / e-mail address combinations, and put this in the Maildir you use. EXIT CODE This command returns 0 upon successful completion, or a non-zero exit code otherwise. 0. success 2. no matches found. Try a different query 11. database schema mismatch. You need to re-initialize mu, see mu- init(1) 19. failed to acquire lock. Some other program has exclusive access to the mu database 99. caught an exception REPORTING BUGS Please report bugs at https://github.com/djcb/mu/issues. AUTHOR Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> COPYRIGHT This manpage is part of mu 1.12.15. Copyright 2008-2026 Dirk-Jan C. Binnema. License GPLv3+: GNU GPL ver- sion 3 or later https://gnu.org/licenses/gpl.html. This is free soft- ware: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO mu(1), mu-index(1), mu-find(1), pcre(3), jq(1) MU CFIND(1)
NAME | SYNOPSIS | DESCRIPTION | SEARCHING CONTACTS | CFIND OPTIONS | COMMON OPTIONS | JSON FORMAT | INTEGRATION WITH MUTT | ENCODING | CORRECTING | EXIT CODE | REPORTING BUGS | AUTHOR | COPYRIGHT | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mu-cfind&sektion=1&manpath=FreeBSD+Ports+15.0.quarterly>
