Se um arquivo contém vários arquivos no diretório raiz, eu gostaria de criar um diretório com o nome do arquivo (sem extensão). Se um arquivo contém apenas um diretório, eu gostaria de simplesmente extraí-lo. Suponha que eu tenho o seguinte arquivo:
# file: withdir.zip
somedir/alpha
somedir/beta
somedir/gamma
Se eu extraí-lo no diretório atual, gostaria de extraí-lo simplesmente ( unzip withdir.zip
):
somedir/alpha
somedir/beta
somedir/gamma
Agora assuma o seguinte arquivo:
# file: nodir.zip
alpha
beta
gamma
Quando executo, unzip nodir.zip
acabo bagunçando o diretório atual com os três arquivos:
alpha
beta
gamma
Prefiro correr unzip -d nodir nodir.zip
:
nodir/alpha
nodir/beta
nodir/gamma
Se eu usar o nautilus e clique com o botão direito do mouse em "Extrair aqui". Ele se comporta exatamente como deveria. Mas, infelizmente, não encontrei uma opção de linha de comando para unzip
ou
7z
que produza o mesmo comportamento. Como conseguir isso? Existem outras ferramentas que eu posso usar (sem GUI)?
withdir
para o arquivowithdir.zip
morto, embora contenha apenas um diretório na raiz porquegrep -c "Folder = -"
retorna3
.O patool lida com diferentes tipos de arquivos e cria um subdiretório, caso o arquivo contenha vários arquivos para evitar a confusão do diretório de trabalho com os arquivos extraídos.
Criar arquivo
Extrair arquivo
Para obter uma lista dos formatos suportados, use
patool formats
.fonte
Você também pode usar unar , que cria um diretório que contém por padrão quando há dois ou mais arquivos de nível superior:
Adicionar
-d
para sempre criar um diretório contendo.fonte