Armazena arquivo no arquivo zip com nome diferente (shell de comando do linux)

5

Em uma linha de comando do linux, você fecha um arquivo por:

zip -mqj archive.zip file.txt

Agora, eu preciso armazenar 'file.txt' como 'file2.txt' em 'archive.zip', sem renomear o arquivo antes de compactar. Quando descompactado, o arquivo deve ser chamado de 'file2.txt'.

Como posso armazenar o arquivo com um nome diferente? Leia a página MAN e não encontre uma resposta.

    
por Trident Splash 31.05.2009 / 19:54

3 respostas

1

A criação de um link físico para o arquivo.txt conta?

ln file.txt file2.txt

Crie o arquivo2.txt que aponta para o mesmo inode do arquivo.txt, sem dobrar o espaço

    
por 31.05.2009 / 19:59
3

Veja link

A solução abaixo é a cópia exata da resposta de @mkrnr em stackoverflow

Você pode usar o zipnote, que deve vir com o pacote zip.

Primeiro, compile o arquivo zip com o arquivo myfile.txt:

zip archive.zip myfile.txt

Em seguida, renomeie myfile.txt dentro do arquivo zip com:

printf "@ myfile.txt\n@=myfile2.txt\n" | zipnote -w archive.zip

(Agradecemos a Jens por sugerir printf em vez de echo -e .)

Uma breve explicação de "@ myfile.txt\n@=myfile2.txt\n" :

De zipnote -h : "@ name" pode ser seguido por uma linha "@ = newname" para alterar o nome

E \n separa os dois comandos.

    
por 02.10.2015 / 13:48
1

Hy, esta é minha primeira resposta, então espero ter feito tudo certo: -)

Aqui está a minha solução para o seu problema, um bom exemplo:

cp file.txt file2.txt | zip -mqj archive.zip file2.txt

Espero poder ajudar!

    
por 31.05.2009 / 20:00