Я бы выбрал сценарий Python. Следующий сценарий запрашивает сервер IMAP -, имя пользователя, пароль и строку темы. Затем он перечисляет все письма, тема которых содержит заданную строку темы.
Прокомментируйте строку imapserver.store (num, '+FLAGS', '\Deleted' ), если вас устраивает поведение. Показанные письма будут помечены для удаления.
#!/usr/bin/python3
import getpass
def del_imap(server, port, login, password, search):
import imaplib, email
# NOTE: According to RFC 1730 the SEARCH commands searches for 'messages that
# CONTAIN the specified string. When multiple keys are specified, the result
# is the intersection (AND function) of all the messages that match those
# keys.
# _search_command = '(FROM ' + search + ')'
# _search_command = '(SUBJECT "testmail" FROM ' + search + ')'
_search_command = '(SUBJECT ' + search + ')'
imapserver = imaplib.IMAP4_SSL(server, port)
imapserver.login(login, password)
imapserver.select()
typ, data = imapserver.search(None, _search_command)
for num in data[0].split():
typ, data = imapserver.fetch(num, '(RFC822.HEADER)')
print (data[0][1].decode())
# Uncomment the following line if the listed files should also be
# flagged for deletion
# imapserver.store(num, '+FLAGS', '\\Deleted')
imapserver.close()
imapserver.logout()
del_imap(input("IMAP Server: "), 993, input("Username: "), getpass.getpass(), input("Search: "))
Я также создал Github -Gist, где будут внесены дальнейшие улучшения:https://gist.github.com/jkirk/39dc64747a9d78accde49de2e8dbdc6d
Вы не можете, так как bash не распределяет вывод ни по какому параметру, ни по какому-либо блоку в своей памяти.
Тем не менее, вы можете использовать $(!!)
- пересчитать(не повторно -использовать )вывод последней команды.
!!
самостоятельно выполняет последнюю команду.
$ echo pierre
pierre
$ echo my name is $(!!)
echo my name is $(echo pierre)
my name is pierre
Источник:Повторное использование вывода последней команды в Bash
Хотя $(!!)
или повторный запуск предыдущей команды может показаться (или иногда )решением, у него также есть свои недостатки, которые необходимо полностью понять при использовании этого метода.
Пример :Если команда сделала некоторые изменения, такие как
rm -rv /tmp/*
, тогда повторный запуск этой команды любым способом может не дать тот же результат, что и раньше, за исключением того, что если /tmp/ был пуст перед первым запуском и остается пустым во второй раз, вывод должен быть таким же.
Итог :Не существует безопасного способа повторного использования или сохранения (без копирования и вставки )вывода последней команды, если вы не сохранили его во время выполнения команды.