텍스트가 포함된 파일을 찾고 해당 파일의 고유한 부분을 결과로 보고합니다.

텍스트가 포함된 파일을 찾고 해당 파일의 고유한 부분을 결과로 보고합니다.

IMAP 폴더에서 특정 텍스트(예: 특정 이메일 주소로 전송된 메시지)가 포함된 모든 이메일을 찾고 싶습니다. 나는 다음과 같이 grep을 사용하여 이 작업을 수행할 수 있다는 것을 발견했습니다.

grep -rnw '~/users/example' -e "[email protected]"

그러면 일치하는 텍스트 또는 파일 이름( -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을 기반으로 파일을 찾아야 하지만 나열된 결과는 동일한 파일의 다른 부분이어야 합니다(정규식을 사용했을 수도 있음).

나는 무엇을 해야 합니까?

답변1

사용 formail(와 함께 제공 procmail):

find ~/users/example -type f -exec sh -c '
  for email do
    formail -x to -x cc < "$email" |
      grep -qF [email protected] &&
      formail -cx subject < "$email"
  done' sh {} +

즉, 각 이메일 파일에 대해

  • 추출 ToCc헤더
  • [email protected]거기에서 검색해 보세요
  • 찾으면 Subject제목을 추출하여 한 줄에 인쇄합니다( -c).

답변2

파일의 "제목", 경로 또는 이름은 무엇입니까? 일치하는 파일 이름을 나열하려면 --files-with-matches 옵션 또는 -l을 사용하십시오. 정규 표현식이 아닌 고정 문자열만 검색하는 경우 -F를 사용하여 프로세스 속도를 높입니다.

grep -F -r -l [email protected] ~/users/example

파일의 나머지 부분을 일치시키려면 찾은 파일 목록에 대해 grep을 사용하십시오(fgrep은 grep -F와 동일합니다).

fgrep -rl [email protected] ~/users/example | xargs grep '^Subject:'

팁: 많은 명령은 빼기 문자 없이 첫 번째 인수에서 옵션 구문 분석을 중지합니다. 따라서 모든 옵션을 먼저 호출해야 합니다.

답변3

그리고 mutt:

muff -f ~/users/example/.Archives.2013

(이것이 maildir 폴더라고 가정합니다). 에 (소문자 ) mutt를 입력합니다 .lL

프롬프트 에 따라 입력하십시오 Limit to messages matching::

~C [email protected]

(엄밀히 말하면 정규식이므로 ~C 'my@example\.com'문자 그대로 .일치 해야 합니다.)

또는 mutt다음으로 시작하세요:

mutt -f ~/users/example/.Archives.2013 -e 'push "l ~C [email protected]"'

~CTo:에서 및 제목을 검색하세요 Cc:.

확인하다수동검색 구문의 경우.

동시에 여러 사서함을 검색하려면 여러 메시지 인덱서(내부 mutt또는 외부)를 사용할 수 있습니다. 바라보다https://dev.mutt.org/trac/wiki/UseCases/SearchingMail예를 들어.

관련 정보