7z
só aceita um único arquivo dentro de seus argumentos, mas você está passando um caractere curinga que se expande para o conteúdo completo do diretório de trabalho atual; Outra questão é que também os curingas dentro dos argumentos se expandirão também, se não citados ou citados duas vezes.
Portanto, você deve extrair apenas um único arquivo por comando; você deve remover o curinga no final, especificar um único arquivo e citar 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 ao mesmo tempo, você pode usar vários métodos:
-
bash
:
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
:
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' {} \;