7zip: Как исключить типы файлов?

9

Я хочу исключить следующие типы файлов:

  • EPUB
  • PDF
  • HTML (в верхнем регистре тоже)
  • azw3
  • моби
  • БКП
  • текст

У меня есть это до сих пор, который, кажется, не работает, я получаю сообщение об ошибке «Неверная командная строка».

7z e "-x!*.epub" "-x!*.pdf" "-x!*.html" "-x!*.azw3" "-x!*.mobi" "-x!*.txt" "-x!*.HTML" "-x!*.opf" *

Я также попробовал вышеупомянутую команду без двойных кавычек.

Я создал вышеупомянутую команду, используя информацию отсюда (для окон), но она не работает в Linux.

дака
источник

Ответы:

10

7zпринимает только один архив в своих аргументах, но вы передаете подстановочный знак, который раскрывается до полного содержимого текущего рабочего каталога; Еще одна проблема заключается в том, что подстановочные знаки в аргументах также будут расширяться, если они не заключены в кавычки или заключены в двойные кавычки.

Таким образом, вы должны извлечь только один архив на команду; в конце следует удалить подстановочный знак, указать один архив и заключить в кавычки аргументы:

7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z

Однако, чтобы извлечь несколько архивов одновременно, вы можете использовать несколько методов:

  • 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' {} \;
кос
источник
У меня есть много архивов, которые нужно извлечь, поэтому в конце используется подстановочный знак для извлечения ВСЕХ архивов.
Дака
@sudoman Вы уверены, что это поддерживается 7z? Хотите попробовать с одним архивом?
Кос
Протестировано, оказывается, 7zip на самом деле не позволяет использовать подстановочный знак для выбора нескольких файлов в данном каталоге.
Дака
@ Я согласен, но проблема в том, что OP не может извлечь несколько архивов одновременно; Однако проголосовал ваш пост
Кос
@sudoman Я обнаружил еще один недостаток в вашей исходной команде, плюс добавил несколько способов извлечения нескольких архивов одновременно
kos
10

От man 7z:

-x[r[-|0]]]{@listfile|!wildcard}
              Exclude filenames

Чтобы исключить файл (или типы), вы можете использовать следующую команду:

7z a -xr@exclude.txt backup.7z /whatever/dirs/or/files

Обратите внимание, -xrвместо -x. rУказывает на рекурсивное поэтому он может соответствовать исключенные файлы в глубоких иерархии папок

Файл exclude.txtпредставляет собой список, разделенный символами возврата каретки:

*.epub
*.pdf
*.html 
*.HTML
*.azw3
*.mobi
*.opf
*.txt
Рон
источник
-2

Если вы хотите исключить полный каталог (возможно, этот файл расширения разделен в каталоге)

 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on ~/bkpFile_$(date +"%d_%b_%Y").1.7z /home/ubuntu/projectfile -mx0 '-xr!vendor' '-xr!view' '-xr!documents' 

Здесь каталог поставщиков , представлений и документов исключен.

manish1706
источник
1
Почему sudo? И что это добавляет к существующим ответам?
Муру