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

Yes, просто наберите в терминале shell

xz -l *.xz
2
07.04.2017, 10:13
3 ответа

Использование 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).
2
27.01.2020, 21:59

Что такое «заголовок» файла, путь или имя? Используйте параметр --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:'

Подсказка : многие команды останавливают анализ параметров по первому аргументу без символа минус. Таким образом, все варианты должны быть вызваны в первую очередь.

1
27.01.2020, 21:59

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

1
27.01.2020, 21:59

Теги

Похожие вопросы