Existe uma opção no comando zip linux, de modo que eu possa codificar o diretório de destino no qual ele descompacta. Por exemplo, eu gostaria de compactar arquivos ./mydir em myzipfile.zip, mas quero que o comando unzip crie um diretório específico "projx" e expanda os arquivos que estavam sob ./mydir.
zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )
Respostas:
Não existe essa opção, pelo menos não para o Info-ZIP. Você precisa criar um diretório projx , mover / copiar seus arquivos para ele e depois passá-lo para
zip
.Se o diretório já existir, basta passar a opção
-d
paraunzip
para especificar o diretório de destino para extração.fonte
Para fazer isso, há um outro caminho. Você pode achatar todo o conteúdo do arquivo zip usando o método a seguir. O diretório de destino é " projx " e execute o seguinte comando.
A opção -j é chamada de "caminhos indesejados" e apenas despeja cada arquivo no diretório atual em vez de extrair qualquer estrutura de diretório.
fonte
Não conheço uma opção específica da linha de comando, mas você pode usar os seguintes comandos para alcançar sua meta:
O primeiro comando cria um link simbólico, para que você possa acessar os arquivos
mydir
também viaprojx
. Em seguida, usandoInfo-ZIP
(testado com a versão 2.31) o link simbólico é desreferenciado (este é o padrão, a menos que você especifique-y
) e os arquivos são armazenados recursivamente:Veja bem, o nome da pasta também é armazenado no arquivo - portanto, após a extração, o diretório
projx
é criado.No entanto, não consigo pensar em uma possibilidade de armazenar caminhos absolutos, mas essa é uma péssima ideia.
fonte
-jj
. Em outros sistemas operacionais, apenas a opção-j
é suportada (e-jj
é interpretada como-j
), que remove qualquer caminho principal e, portanto, leva ao oposto (um design muito inteligente ...).