Vraag Bewaar bestand in zip-archief met andere naam (linux command shell)


In een linux-opdrachtregel zip je een bestand door:

zip -mqj archive.zip file.txt

Nu moet ik 'file.txt' opslaan als 'file2.txt' in 'archive.zip', zonder het bestand te hernoemen voordat ik begin met rippen. Wanneer het wordt uitgepakt, zou het bestand 'file2.txt' moeten heten.

Hoe kan ik het bestand met een andere naam opslaan? Lees de MAN-pagina door en vond geen antwoord.


5
2018-05-31 17:54


oorsprong




antwoorden:


Wordt er een harde koppeling naar file.txt gemaakt?

ln file.txt file2.txt

Maak file2.txt, die naar exact dezelfde inode verwijst als file.txt, zonder de ruimte daadwerkelijk te verdubbelen


1
2018-05-31 17:59





Zien https://stackoverflow.com/questions/16710341/linux-zip-command-add-a-file-with-different-name

De onderstaande oplossing is de exacte kopie van het antwoord van @mkrnr op stackoverloop

Je kunt de zipnote gebruiken die bij het zip-pakket hoort.

Bouw eerst het zip-archief met het bestand myfile.txt:

zip archive.zip myfile.txt

Hernoem dan mijnbestand.txt in het zip-archief met:

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

(Dankzij Jens voor suggereren printf in plaats van echo -e.)

Een korte uitleg van "@ myfile.txt\n@=myfile2.txt\n":

Van zipnote -h: "@ name" kan worden gevolgd door een regel "@ = newname" om de naam te wijzigen

En \n scheidt de twee opdrachten.


3
2017-10-02 11:48





Hy daar, dit is mijn eerste antwoord dus ik hoop dat ik alles goed heb gedaan :-)

Hier is mijn oplossing voor uw probleem, een mooie one-liner:

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

Ik hoop dat ik kan helpen!


1
2018-05-31 18:00



Dit is een goede poging, maar de pijp is verwarrend. Ik denk dat de persoon die vroeg niet eerst een kopie van het bestand wilde maken, maar als hij dat deed, zou een andere manier om dit te doen cp file.txt file2.txt && zip -mqj archive.zip file2.txt && rm kunnen zijn -f bestand2.txt - dit zou de tijdelijke file2.txt opschonen die werd aangemaakt. - Matt Simmons
bedankt voor het wijzen van dit - ik zou deze aanpak ook posten (maar dat deed je al, bedankt!) cp file.txt file2.txt && zip -mqj archive.zip file2.txt (vanwege de -m switch wordt het bestand al verplaatst en het is niet nodig om achteraf te verwijderen!) - Lypsis
Ah! Goed gesprek. Ik ben minder vertrouwd met zip dan met tar. bedankt! - Matt Simmons
@Mat. Cant gebruiken wij mv in plaats van cp die geen exemplaar zullen creëren, zal het dossier anders noemen, ritsen en de kopie verwijderen om ruimte te ontruimen. Alleen een gedachte. - Viky
@ Viky - Dat zou goed werken, behalve een van de verzoeken in de vraag was dat we het bestand niet hernoemen. Ik denk dat als we meer over de situatie te weten zouden komen, er een beter antwoord zou zijn geweest, maar zolang de persoon die de vraag stelde blij is ... - Matt Simmons