7z
chỉ chấp nhận một kho lưu trữ duy nhất trong các đối số của nó, nhưng bạn đang chuyển một ký tự đại diện mở rộng ra toàn bộ nội dung của thư mục làm việc hiện tại; Vấn đề anothe là các ký tự đại diện trong các đối số cũng sẽ mở rộng, nếu không được trích dẫn hoặc trích dẫn kép.
Vì vậy, bạn chỉ nên trích xuất một kho lưu trữ duy nhất cho mỗi lệnh; bạn nên xóa ký tự đại diện ở cuối, chỉ định một tệp lưu trữ và trích dẫn một đối số:
7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z
Để trích xuất nhiều tài liệu lưu trữ cùng một lúc, tuy nhiên bạn có thể sử dụng nhiều phương pháp:
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' {} \;