![notmuch 데이터베이스의 기존 maildir 메시지 파일 이름에서 notmuch 메시지 ID와 스레드 ID를 얻는 방법은 무엇입니까?](https://linux55.com/image/179030/notmuch%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%9D%98%20%EA%B8%B0%EC%A1%B4%20maildir%20%EB%A9%94%EC%8B%9C%EC%A7%80%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%EC%84%9C%20notmuch%20%EB%A9%94%EC%8B%9C%EC%A7%80%20ID%EC%99%80%20%EC%8A%A4%EB%A0%88%EB%93%9C%20ID%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
파일을 반환하는 쿼리를 만든다고 가정해 보겠습니다.
$ notmuch search --output=files tag:inbox from:love
그러면 Maildir 메시지를 가리키는 파일 목록이 반환됩니다. 이제 다음과 같은 파일 중 하나를 선택합니다(이미 notmuch 데이터베이스에 있음).
FILENAME=$(notmuch search --output=files tag:inbox from:love | fzf)
NotMuch 데이터베이스에서 메시지 ID와 스레드 ID를 가져오고 싶습니다.$FILENAME 변수에서 몇 가지 메시지 ID를 찾고 싶습니다.
이를 수행하는 매우 엉성한 방법은 파일을 구문 분석하고 /subject/date에서 헤더를 읽고 몇 가지 쿼리를 수행하는 것입니다 notmuch search from:{...} subject:{...} date:{..}
. 하지만 파일 이름은 이미 데이터베이스에 저장되어 있으므로 파일 이름에서 메시지 ID를 가져오는 정식적이고 안정적인 방법이 있어야 한다고 생각했습니다.
감사해요!
답변1
마침내 많지 않은 파이썬 바인딩을 통해 방법을 찾았습니다.https://notmuch.readthedocs.io/projects/notmuch-python/en/latest/database.html?highlight=filename#notmuch.Database.find_message_by_filename
라이너에 대한 효과적인 타격은 다음과 같습니다.
threadId=$(python3 -c "import notmuch; db = notmuch.Database(); print(db.find_message_by_filename('$FILENAME').get_thread_id())");
압축이 풀린 python3 코드는 다음과 같습니다.
import notmuch
db = notmuch.Database()
msg = db.find_message_by_filename('filename of the maildir message')
msg.get_thread_id()
답변2
maildir 파일 이름을 기반으로 notmuch 데이터베이스를 검색하는 방법을 찾지 못했습니다.검색어가 많지 않음 (7)
Message-Id를 반복하여 검색에서 직접 Message-Id 및 NotMuch 스레드 ID를 얻을 수 있습니다.
for message_id in $(notmuch search --output=messages 'tag:inbox from:love')
do
thread_id=$(notmuch search --output=threads $message_id)
echo "$thread_id - $message_id"
done
또는 스레드를 반복하여 관련 메시지 ID를 얻을 수 있습니다.
for thread_id in $(notmuch search --output=threads 'tag:inbox from:love')
do
# sed is here only to provide the output in the same format as in the first example
notmuch search --output=messages $thread_id | sed "s/^/$thread_id - /"
done
어느 것이 귀하의 요구에 더 잘 맞는지. 두 for 루프 모두 다음 형식으로 결과를 인쇄합니다.
thread:THREAD_ID - id:MESSAGE_ID
…
당신이 얻고 싶다면~에서,날짜,주제헤더를 사용하면 jq를 사용하여 maildir 파일을 구문 분석하지 않고 notmuch 데이터베이스에서 직접 헤더를 추출할 수도 있습니다.이메일(1)또는 유사한 도구.
notmuch search --format=json id:MESSAGE_ID | jq -r '.[].subject'