텍스트가 포함된 파일을 찾았지만 그 내용의 다른 부분을 결과로 보고합니다.

텍스트가 포함된 파일을 찾았지만 그 내용의 다른 부분을 결과로 보고합니다.

내 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예를 들어.

관련 정보