Если архив содержит несколько файлов в корневом каталоге, я хотел бы создать каталог с именем по имени файла (без расширения). Если архив содержит только каталог, то я бы хотел просто распаковать его. Предположим, у меня есть следующий архив:
# file: withdir.zip
somedir/alpha
somedir/beta
somedir/gamma
Если я извлекаю его в текущем каталоге, я бы хотел, чтобы он был просто извлечен ( unzip withdir.zip
):
somedir/alpha
somedir/beta
somedir/gamma
Теперь предположим следующий архив:
# file: nodir.zip
alpha
beta
gamma
Когда я запускаю, unzip nodir.zip
я заканчиваю загромождать текущий каталог тремя файлами:
alpha
beta
gamma
Я бы лучше побежал unzip -d nodir nodir.zip
:
nodir/alpha
nodir/beta
nodir/gamma
Если я использую наутилус и щелкну правой кнопкой мыши на «Извлечь здесь». Он ведет себя именно так, как и должен. Но, к сожалению, я не нашел ключ командной строки для unzip
или
7z
которые дают такое же поведение. Как этого добиться? Есть ли другие инструменты, которые я могу использовать вместо (без графического интерфейса)?
withdir
для архива,withdir.zip
хотя он содержит только один каталог в корне, потому чтоgrep -c "Folder = -"
возвращает3
.patool обрабатывает различные виды архивов и создает подкаталог на тот случай, если архив содержит несколько файлов, чтобы не загромождать рабочий каталог извлеченными файлами.
Создать архив
Извлечь архив
Чтобы получить список поддерживаемых форматов, используйте
patool formats
.источник
Вы также можете использовать unar , который по умолчанию создает каталог, содержащий два или более файлов верхнего уровня:
Добавить,
-d
чтобы всегда создавать содержащий каталог.источник