7z
aceita apenas um único arquivo dentro de seus argumentos, mas você está passando um curinga que se expande para todo o conteúdo do diretório de trabalho atual; Outra questão é que também os curingas nos argumentos também serão expandidos, se não estiverem entre aspas ou entre aspas.
Portanto, você deve extrair apenas um único arquivo por comando; você deve remover o curinga no final, especificar um único arquivo e aspas simples os argumentos:
7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z
Para extrair vários arquivos de uma vez, no entanto, você pode usar vários métodos:
for archive in *.7z; do 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' "$archive"; done
find . -maxdepth 1 -type f -iname "*.7z" -exec 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' {} \;