Question Stocker le fichier dans l'archive zip avec un nom différent (shell de commande linux)


Dans une ligne de commande Linux, vous compressez un fichier en:

zip -mqj archive.zip file.txt

Maintenant, j'ai besoin de stocker 'fichier.txt' en tant que 'fichier2.txt' dans 'archive.zip', sans renommer le fichier avant de zipper. Une fois décompressé, le fichier doit s'appeler 'fichier2.txt'.

Comment puis-je stocker le fichier avec un nom différent? Lisez la page MAN sans trouver de réponse.


5
2018-05-31 17:54


origine




Réponses:


La création d’un lien physique vers fichier.txt compte-t-elle?

ln file.txt file2.txt

Créez file2.txt qui pointe exactement sur le même inode que file.txt, sans doubler réellement l'espace


1
2018-05-31 17:59





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

La solution ci-dessous est la copie exacte de la réponse de @mkrnr sur stackoverflow

Vous pouvez utiliser zipnote qui devrait venir avec le paquet zip.

Commencez par créer l’archive zip avec le fichier myfile.txt:

zip archive.zip myfile.txt

Puis renommez myfile.txt dans l’archive zip avec:

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

(Grâce à Jens pour suggérer printf au lieu de echo -e.)

Une courte explication de "@ myfile.txt\n@=myfile2.txt\n":

De zipnote -h: "@ name" peut être suivi d'une ligne "@ = newname" pour changer le nom

Et \n sépare les deux commandes.


3
2017-10-02 11:48





Hy là, c'est ma première réponse alors j'espère avoir tout fait correctement :-)

Voici ma solution à votre problème, une belle one-liner:

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

J'espère pouvoir aider!


1
2018-05-31 18:00



C'est une bonne tentative, mais le tuyau est déroutant. Je pense que la personne qui a demandé ne voulait pas créer d’abord une copie du fichier, mais s’il le faisait, cp file.txt file2.txt && zip -mqj archive.zip file2.txt && rm pourrait être un autre moyen de le faire. -f fichier2.txt - cela nettoierait le fichier temporaire 2.txt créé. - Matt Simmons
merci de le signaler - je signalerais aussi cette approche (mais vous l’avez déjà fait, merci!) cp fichier.txt fichier2.txt && zip -mqj archive.zip fichier2.txt (en raison du paramètre -m, le fichier obtient déjà déplacé et il n'y a pas besoin d'enlever après!) - Lypsis
Ah! Bon appel. Je connais moins le code zip que le tar. Merci! - Matt Simmons
@Mat. Cant nous utilisons simplement mv au lieu de cp qui ne créera pas de copie, renommera le fichier, le compressera et supprimera la copie pour libérer de l’espace. Juste une pensée. - Viky
@Viky - Cela fonctionnerait bien, sauf que l'une des demandes de la question était de ne pas renommer le fichier. Je pense que si nous en avions plus sur la situation, une meilleure réponse se serait présentée, mais tant que la personne qui a posé la question est heureuse ... - Matt Simmons