Найти файлы, содержащие текст, но сообщать о них в качестве результата

Я хочу найти все электронные письма в папках IMAP, содержащих определенный текст (а именно: которые отправляются на определенный адрес электронной почты). Я уже выяснил, что могу сделать это, используя grep:

grep -rnw '~/users/example' -e "my@example.com" 

Это возвращает либо согласованный текст, либо имя файла (с -l ). Но то, что мне действительно нужно для моей задачи, – это знать «Название» найденного файла электронной почты.

 /home/example/users/example/.Archives.2013/cur/1364614080.4080.example.com:2,Sa /home/example/users/example/.Archives.2013/cur/1385591317.91317.example.com:2,RSa /home/example/users/example/.Archives.2013/cur/1358235054.35054.example.com:2,S /home/example/users/example/.Archives.2013/cur/1358445545.45545.example.com:2,S /home/example/users/example/.Archives.2013/cur/1453119248.M330746P8611.example.com,S=6761,W=6915:2,S 

Итак, мне как-то нужно найти файлы на основе grep выше, но результат, который указан в списке, должен быть другой частью того же файла (может быть, с регулярным выражением?).

Как я могу это сделать?

3 Solutions collect form web for “Найти файлы, содержащие текст, но сообщать о них в качестве результата”

Использование 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-matches или -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: prompt введите:

 ~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 .

  • рассылка через ssh
  • Неизвестная ошибка протокола SSL
  • резервные электронные письма от IMAP в удобочитаемой форме
  • mutt: переместить папку IMAP
  • Mutt: автоматическая подписка на почтовые ящики IMAP
  • Папки IMAP: насколько большой размер?
  • Может ли веб-сервер Apache отвечать на запросы SMTP / IMAP / POP3?
  • Проблемы с отправкой / получением почтового сервера
  • В случае успешного входа через IMAP сервер электронной почты отвечает без «ОК» и тега
  • Как загрузить мои письма на другой почтовый сервер, который я загрузил через IMAP с моего первого?
  • mutt: как классифицировать входящие письма
  • Interesting Posts

    Какова цель первого аргумента для выбора системного вызова?

    Могу ли я загрузить или загрузить файл, используя CURL для файла: ///// my_windows / test (не-http-ссылка)

    игнорировать файл хоста в ZSH ssh / scp tab-complete

    Установка внешнего устройства HFS + с помощью truecrypt – только для чтения файловой системы

    Найти файлы старше x времени в определенном каталоге с игнорированием подкаталогов

    Насколько ограниченный дистрибутив Linux на Nokia n900?

    проблема с zip-файлом с использованием пароля

    скриншот только активный монитор на ubuntu / debian

    перезагрузка пользователя-dirs.dirs при запуске

    Извлечение нескольких экземпляров текста между двумя строками

    Почему mv удалил файл с mv id_rsa * .old?

    Хотите назначить выделенный шлюз по умолчанию для двух карт NIC на сервере linux

    Alsa не обнаруживает USB-микрофон при загрузке системы

    Рейд 5 не начинается

    Как асинхронно запускать внешнюю программу из cli и отбрасывать ее вывод?

    Linux и Unix - лучшая ОС в мире.