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 {} +
즉, 각 이메일 파일에 대해
- 추출
To
및Cc
헤더 [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]"'
~C
To:
에서 및 제목을 검색하세요 Cc:
.
확인하다수동검색 구문의 경우.
동시에 여러 사서함을 검색하려면 여러 메시지 인덱서(내부 mutt
또는 외부)를 사용할 수 있습니다. 바라보다https://dev.mutt.org/trac/wiki/UseCases/SearchingMail예를 들어.