auto-update-daily-20260202
 1#!/usr/bin/env nix-shell
 2#! nix-shell -i bash -p mu jq
 3
 4# extract-email-attachments.sh
 5# Extract attachments from emails matching a mu query
 6# Usage: ./extract-email-attachments.sh "query" /output/dir
 7
 8set -euo pipefail
 9
10query="$1"
11output_dir="$2"
12
13if [ -z "$query" ] || [ -z "$output_dir" ]; then
14  echo "Usage: $0 <mu-query> <output-directory>"
15  echo ""
16  echo "Examples:"
17  echo "  $0 'attach:*.pdf' ./pdfs"
18  echo "  $0 'from:alice@example.com attach:*' ./alice-attachments"
19  echo "  $0 'maildir:/redhat/* date:1m.. attach:*.xlsx' ./work-spreadsheets"
20  exit 1
21fi
22
23mkdir -p "$output_dir"
24
25echo "Searching for emails matching: $query"
26# Count emails with attachments
27count=$(mu find $query attach:* --format=links 2>/dev/null | wc -l)
28
29if [ "$count" -eq 0 ]; then
30  echo "No emails found matching query with attachments."
31  exit 0
32fi
33
34echo "Found $count emails with attachments"
35echo "Extracting to: $output_dir"
36echo ""
37
38extracted=0
39mu find $query attach:* --format=links | while read -r email_path; do
40  if [ -f "$email_path" ]; then
41    echo "Processing: $(basename "$email_path")"
42    mu extract --target-dir="$output_dir" "$email_path" 2>/dev/null && extracted=$((extracted + 1))
43  fi
44done
45
46echo ""
47echo "Extraction complete. Files saved to: $output_dir"
48echo ""
49ls -lh "$output_dir" | head -20