Можно ли распаковать документы в каталог, который создается на лету одной командой?

Как я могу добиться чего-то вроде следующего?

unzip ./zipped_docs.zip ./new_folder | mkdir ./new_folder

Или

mkdir ./new_folder | unzip ./zipped_docs.zip ./new_folder

Я даже пытался

mkdir ./new_folder && unzip ./zipped_docs.zip ./new_folder

Ничего из этого не сработало, но идея ясна.

Это возможно?

0
задан 2 July 2019 в 19:58

2 ответа

Правильный способ сделать это - использовать опцию -d в команде unzip

mkdir new_folder && unzip zipped_docs.zip -d new_folder

Из man unzip:

[-d exdir]
              An  optional  directory  to which to extract files.  By default,
              all files and subdirectories are recreated in the current direc‐
              tory;  the -d option allows extraction in an arbitrary directory
              (always assuming one has permission to write to the  directory).
3
ответ дан 2 July 2019 в 19:58

Я нашел флаг file-roller -h полезным, когда архив не содержит ни одного каталога верхнего уровня, а вместо этого представляет собой набор файлов и / или каталогов. Используя file-roller -h, будет создан новый каталог, соответствующий имени вашего архива.

file-roller -h archive.zip

Например, archive.zip будет извлечен во вновь созданный каталог archive. С простым именем могут возникнуть коллизии, но идея в том, что извлекаемый вами архив будет относительно уникальным.

Вместо того, чтобы этот каталог создавался автоматически и на основе имени архива, вы можете указать каталог, используя флаг -e.

file-roller -e /tmp/new_dir archive.zip

Если следующим шагом будет сделать это для группы файлов в каталоге, обратите внимание на некоторые распространенные ошибки, в частности, циклически просматривая файлы в каталоге (например: for f in dir/ )

1
ответ дан 2 July 2019 в 19:58

Другие вопросы по тегам:

Похожие вопросы: