Page 1 sur 1

[zip] compresser plusieurs fichiers (Résolu)

Publié : lun. 23 oct. 2017, 17:29
par Shaaake
Bonjour,

J'ai plusieurs fichiers que je voudrais zipper chacun dans une archive zip, avec file-roller je ne trouve pas l'option, comment est-ce que je peux faire ?

Merci

Re: [zip] compresser plusieurs fichiers

Publié : lun. 23 oct. 2017, 18:07
par Joffrey
Bonjour,

Avec la commande "zip" et une boucle "for" ça fonctionne bien.

Code : Tout sélectionner

for file in *; do zip -r "$file".zip "$file"; done
Ça compresse tous les fichiers et répertoires dans le répertoire où tu te trouves.

Edit: Si tu veux tout mettre dans une archive:

Code : Tout sélectionner

zip -r mon.zip *
Ou juste certains fichiers

Code : Tout sélectionner

zip mon.zip fichier1 fichiers2

Re: [zip] compresser plusieurs fichiers

Publié : mar. 24 oct. 2017, 11:06
par Shaaake
Ah génial, quelle est la différence entre && et ; ?

Du coup je me retrouver avec un fichier .extension.zip, comment est-ce que je peux retirer .extension de tous les fichiers et garder que .zip à la fin ?

Re: [zip] compresser plusieurs fichiers

Publié : mar. 24 oct. 2017, 14:14
par Joffrey
Pour un formatage sans l'extension:

Code : Tout sélectionner

${tavariable%.*}

Code : Tout sélectionner

commande1 && commande2 # commande2 est exécuté seulement si la commande1 c'est bien passé
commande1 ; commande2  # commande2 est exécuté à la suite de commande1

Re: [zip] compresser plusieurs fichiers

Publié : mer. 25 oct. 2017, 10:58
par Shaaake
Donc ; s'exécute même si la commande 1 ne s'est pas bien passée ?

Pour ${tavariable%.*} j'ai pas compris

Re: [zip] compresser plusieurs fichiers

Publié : mer. 25 oct. 2017, 13:26
par avi3000
Shaaake a écrit : mer. 25 oct. 2017, 10:58 Pour ${tavariable%.*} j'ai pas compris
man bash + /substitute
ou https://man.cx/sh(1)/fr remplacement de paramètres

:rtfm2:

Re: [zip] compresser plusieurs fichiers

Publié : mer. 25 oct. 2017, 18:25
par Shaaake
Je crois que ça sert à faire une commande dans une autre commande mais je ne sais pas comment retirer l'extension dans le nom

Re: [zip] compresser plusieurs fichiers

Publié : mer. 25 oct. 2017, 18:37
par waitnsea
Shaaake a écrit : mer. 25 oct. 2017, 18:25 Je crois que ça sert à faire une commande dans une autre commande mais je ne sais pas comment retirer l'extension dans le nom
Bonjour,
Pas si facile, une bonne explication
La solution :

Code : Tout sélectionner

$ for file in *; do zip ${file%.*}.zip "$file"; done

Re: [zip] compresser plusieurs fichiers

Publié : jeu. 26 oct. 2017, 23:03
par Shaaake
Merci pour ton aide,

Du coup pour la partie ${file%.*}.zip, le .* veut dire qu'il ignore ce qu'il y a à l'endroit de l'étoile ?

J'ai également besoin d'aide, je fais un script pour automatiser les couleurs de fonds d'écran, etc, je me base sur mes fichiers de couleurs .Xresources, donc j'ai pris :

color=$(cat .Xresources | awk '/\*background:/ {print $2}')

Le problème c'est que des fois je me retrouve avec
*.background,
des fois
*background

Et il y a également des tabulations, enfin tout est différent, je pourrais avoir un peu d'aide pour essayer de faire le truc le plus universel possible ?

Merci

Re: [zip] compresser plusieurs fichiers

Publié : ven. 27 oct. 2017, 07:12
par waitnsea
Si résolu tu édites ton 1er post (icône avec le crayon) et tu ajoutes (Résolu) au titre
Puis tu ouvres un autre post pour un autre sujet : 1 seul post par sujet