Имена файлов Munpack и utf-8 во вложениях

Имена файлов Munpack и utf-8 во вложениях

у меня есть еще одна проблема с UTF-8. Я использую munpack -C $extrdir $fileдля автоматического извлечения файлов JPG из писем, которые я получил с помощью fetchmail. После этого я использую bashи imagemagickдля обработки изображений, которые я могу получить с помощью find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*". Это отлично работает для большинства изображений, если только к имени файла не добавляются пробелы или специальные символы.

В исходном коде электронного письма имя файла записано как

Content-Disposition: attachment; filename="=?UTF-8?B?V2FuZGVydW5nIFNwaWVsd2VnIDIuSlBH?=" 

. munpackсохранить файл как

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

Я мог бы добавить "*XUTF*"в find, но тогда другие типы вложений, такие как txt-файлы, imagemagickтакже могут быть обработаны. munpackтакже заменяет «?» на «X», поэтому я не могу расшифровать имена файлов.

Есть ли у вас решение этой проблемы?

Заранее спасибо!

решение1

Этот обходной путь помог мне. К сожалению, имена файлов утеряны. Но это не то, что мне было нужно.

Используйте munpackи перенаправьте вывод в файл:

munpack -C $extrdir $file > attachments

Содержимое файла, attachementsкоторое вы сейчас увидите, было извлечено:

=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDExLkpQRw==X= (image/jpeg)
=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDE3LkpQRw==X= (image/jpeg)
...

Теперь пройдитесь по каждой строке, проверьте, являются ли они изображениями, и переименуйте их:

while read p; do
    if [[ $p == *"image"* ]]
    then
        FLNM=attach_${num}.jpg
        IFS=' (' read -a array <<< "$p"
        mv "${array[0]}" "$FLNM"
    fi
    num=$((num + 1))
done <attachements

Вывод в каталоге будет следующим:

attach_1.jpg
attach_2.jpg
attach_3.jpg

Связанный контент