Сценарии:
Каталог a
существует, но b
нет`:
cp -a "$HOME"/a "$HOME"/b
скопирует весь каталог a
в новый каталогb
Каталоги a
и b
существуют:
cp -a "$HOME"/a "$HOME"/b
скопирует каталогa
в каталог b
. В результате вы получите каталог "$HOME"/b/a
.
Каталоги a
и b
существуют:
cp -a "$HOME"/a/* "$HOME"/b
скопирует содержимое изa
в каталог b
, но исключит скрытые файлы и каталоги. Хотя у некоторых оболочек есть несколько опций для их включения, здесь лучшим подходом будет:
cp -a ~/a/. ~/b/
Как я понимаю, вы этого и хотите.
Решил составить ответ, т. к. он становится достаточно большим, чтобы решать его в обсуждении в комментариях под вопросом.
Я понимаю, что проект различается для разных отправителей, тем или содержания письма.
Вам потребуются два макроса, как здесь Команда запуска Neomutt для прикрепления файла к клавише макроса
Первый макрос выполняет свою работу и должен находиться в отдельном файле -, поскольку часть оболочки расширена на определение макросов. Вот почему Вам нужно переопределить его вторым макросом, который определяет первый и выполняет его.
~/.mutt/dynamic _макрос
"<pipe-message>/path/to/your/script<enter>\
<save-message>`cat /tmp/mutt_project`<enter>" \
"pipe message to extract attachments and save message"
~/.mutt/muttrc
macro index,S \
"<enter-command>source ~/.mutt/dynamic_macro<enter>\
<enter-command>push,s<enter>" \
"redefine macro and run it"
Теперь вот неработающий пример /path/to/your/script
в псевдокоде (bash вроде ). Сценарий читает сообщение со стандартного ввода, анализирует заголовки или тело, чтобы определить проект имя (имя почтового ящика )и перебирает части, чтобы сохранить вложения -, возможно, в какой-то каталог и подкаталоги по проектам. ?
detect_project(){
# parse $content to detect project from body/headers
# save the project name to /tmp/mutt_project for the 1st macro
# and output on stdout for save_attachemnts()
echo $result > /tmp/mutt_project
echo $result
}
save_attachments(){
# parse $content, iterate over parts of message from $content,
# extract attachments, decode, save to:
#/root_directory_with_attachments/$project/$your_filename
}
main(){
content=$(cat) # read the stdin and save it into variable
project=$(detect_project)
save_attachments
}
main
Предложения:
<save-message>
будет содержать проект, обнаруженный из последнего сообщения Различные решения :переходят от mutt к neomut и от mu к notmuch. Neomutt имеет хорошую сборку -для поддержки notmuch. Все здесь можно было бы сделать немного пост -новый хук. Он идеально подходит для вашего случая использования, работает в фоновом режиме без каких-либо макросов neomutt и устраняет ограничение префикса тега -оригинального решения. Nomtuch post -новый хук запускается каждый раз после того, как вы синхронизируете свои сообщения.
Если Вас это интересует, оставьте здесь комментарий, и я расширю ответ.