Manter a estrutura do arquivo zip

1

Eu tenho um diretório

main_folder
  first_folder
    second_folder
      empty.txt
      another_folder
        another_empty.txt

Eu quero zip second_folder e estou em main_folder , então fechei com o comando

zip -jr first_folder/zip_file first_folder/second_folder

O arquivo zip contém

empty.txt
another_empty.txt

Mas eu quero

empty.txt
another_folder
  another_empty.txt

Como posso ter isso?

    
por Mika H. 05.11.2012 / 04:23

2 respostas

1

O sinalizador -j (caminhos de lixo) que você definiu está matando o que você deseja, uma vez que remove os caminhos das pastas. Dito isto, no entanto, eu realmente não vejo uma maneira de apenas fazer segundo +. Da página do homem:

You may want to make a zip archive that contains the files in foo, without recording the directory name, foo. You can use the -j option to leave off the paths, as in:
zip -j foo foo/*

Pelo que eu posso dizer, é assim que funciona em "zip" (nada no homem sugere o contrário).

Edit: Eu estava um pouco atrás do outro cara enquanto tentava descobrir como fazer o que você quer.

Por que você simplesmente não navega até o diretório e o zip? Se você quer acabar de volta onde você estava, isso vai fazê-lo (embora um desperdício de tempo imo).

cd first_folder/second_folder/ && zip -r name ./ && mv name.zip ${here} && cd -

(Obrigado ao @KarthikT pelo atalho "cd -").

    
por 05.11.2012 / 04:44
1

De página man do zip

-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).

Basta remover o -j para corrigi-lo.

    
por 05.11.2012 / 04:41

Tags