2

7-Zip - потрясающий инструмент, но иногда он работает странным образом. Рассмотрим следующую директорию D:\dir layout:

foo   <DIR>
bar   <DIR>
baz   <DIR>
empty <DIR> -- this directory is empty by intention

Теперь при выполнении следующих команд:

>D:
>cd D:\dir
>7z a -r -bb3 -mx9 -mmt -ms empty.7z empty
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive:
    0M Scan foo\bar\baz

По какой-то причине 7-Zip сканирует каталоги, которые не имеют отношения к процессу сжатия. Это относится к 7-Zip [64] 16.04, но так работало в гораздо более старых версиях. Не уверен, что это также воспроизводимо в Linux.

Как отключить сканирование и заставить 7-Zip анализировать только указанный каталог рекурсивно?


редактировать

Игорь Павлов, создатель 7-Zip, любезно объяснил мне, как 7z работает для такого сценария.

1 ответ1

2

Я задавал тот же вопрос на официальных форумах 7-Zip и получил ответ от Игоря Павлова. Я хотел бы получить ответ от Игоря на сайте, но у него, похоже, здесь нет аккаунта. Он предлагает просто удалить -r , так как 7z по умолчанию использует рекурсивный поиск:

Ваша команда ищет пустой файл или папку во всех подпапках.
Удалить -r .

http://7-zip.org/faq.html

Вот соответствующая выдержка из официального FAQ:

Почему ключ -r не работает должным образом?

В большинстве случаев вам не нужен ключ -r. 7-Zip может сжимать подпапки даже без ключа -r.

Пример 1:
7z.exe a c:\a.7z "C:\Program Files"
сжимает «C:\Program Files» полностью, включая все подпапки.

Пример 2:
7z.exe a -r c:\a.7z "C:\Program Files"
ищет и сжимает "Program Files" во всех подпапках C:\ (например, в «C:\ WINDOWS»).

Если вам нужно сжать только файлы с некоторым расширением, вы можете использовать ключ -r:
7z a -r c:\a.zip c:\dir\*.txt
сжимает все * .txt файлы из папки c:\ dir\ и всех ее подпапок.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .