7zip: Як виключити типи файлів?


9

Я хочу виключити такі типи файлів:

  • epub
  • pdf
  • html (верхній регістр теж)
  • azw3
  • mobi
  • опф
  • txt

У мене це поки що, здається, не працює, я отримую помилку, кажучи "Неправильний командний рядок".

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

Я також спробував вищевказану команду без подвійних лапок.

Я створив вищевказану команду, використовуючи інформацію звідси (для Windows), але вона, схоже, не працює під 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' {} \;

У мене є багато архівів, які потребують вилучення, отже, використання підстановки в кінці для вилучення ВСІХ архівів.
daka

@sudoman Ви впевнені, що це підтримується 7z? Ви можете спробувати з одним архівом?
kos

Протестований, виявляється, 7zip насправді не дозволяє використовувати підстановку для вибору декількох файлів у певній папці.
daka

@Ron Я згоден, але проблема тут полягає в тому, що ОП не може витягти декілька архівів одночасно; однак підтримав вашу посаду
kos

@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' 

Тут каталог із постачальниками , переглядами та документами виключено.


1
Чому sudo? І що це додає до існуючих відповідей?
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.