Использование formail
(, поставляемого сprocmail
):
find ~/users/example -type f -exec sh -c '
for email do
formail -x to -x cc < "$email" |
grep -qF my@example.com &&
formail -cx subject < "$email"
done' sh {} +
То есть для каждого файла электронной почты
To
и Cc
my@example.com
там Subject
и напечатайте его в одной строке (с-c
). Что такое «заголовок» файла, путь или имя? Используйте параметр --files-with-match или -l для вывода списка совпадающих имен файлов. Если вы ищете только фиксированные строки вместо регулярных выражений, ускорите процесс с помощью -F
grep -F -r -l my@example.com ~/users/example
Сопоставьте другое содержимое файла, выполните grep список найденных файлов (fgrep совпадает с grep -F):
fgrep -rl my@example.com ~/users/example | xargs grep '^Subject:'
Подсказка : многие команды останавливают анализ параметров по первому аргументу без символа минус. Таким образом, все варианты должны быть вызваны в первую очередь.
Сmutt
:
muff -f ~/users/example/.Archives.2013
(если это папка maildir ). А внутри mutt
введите l(нижний регистрL
).
В ответ на приглашение Limit to messages matching:
введите :
~C my@example.com
(хотя, строго говоря, поскольку это регулярное выражение, оно должно быть ~C 'my@example\.com'
для того, чтобы .
соответствовало буквально ).
Или начните mutt
как:
mutt -f ~/users/example/.Archives.2013 -e 'push "l ~C my@example.com"'
~C
выполняет поиск в заголовках To:
и Cc:
.
См. в руководстве синтаксис поиска.
Для поиска одновременно в нескольких почтовых ящиках существует несколько почтовых индексаторов, которые можно использовать (внутри mutt
или нет ). См., например, https://dev.mutt.org/trac/wiki/UseCases/SearchingMail.