Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/08/2011, à 11:01

clicgauche

Zipper des repertoires séparement

Bonjour,

J'ai du mal à trouver la "commande magique" pour générer des fichier zip séparé :

Soit un arborescence telle que  :

./82001/a.dxf
./82001/b.dxf
./82001/c.dxf
./78999/a.dxf
./78999/b.dxf
./78999/c.dxf

Comment faire pour générer un fichier zip par répertoire contenant les fichiers contenu dans le répertoire.

Je voudrais donc en sortie :  82001.zip  et 78999.zip

Merci

Dernière modification par clicgauche (Le 03/08/2011, à 18:12)

Hors ligne

#2 Le 03/08/2011, à 11:18

helly

Re : Zipper des repertoires séparement

Bonjour.
Un truc genre

for dir in $(find . -type d) ; do ; 7z a $dir.7z $dir ; done 

?
Grosso-merdo hein wink.
Ce script peut necessiter l’installation de p7zip.


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#3 Le 03/08/2011, à 11:33

clicgauche

Re : Zipper des repertoires séparement

Je tiens absolument au format zip en sortie...

Hors ligne

#4 Le 03/08/2011, à 11:42

helly

Re : Zipper des repertoires séparement

for dir in $(find . -type d | grep -v "^.$") ; do  zip -9r $dir.zip $dir ; done 

vala !

Dernière modification par helly (Le 03/08/2011, à 13:12)


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#5 Le 03/08/2011, à 12:33

FRUiT

Re : Zipper des repertoires séparement

helly a écrit :
for dir in $(find . -type d | grep -v "^.$") ; do : zip -9r $dir.zip $dir ; done 

vala !

Le : après do est en trop.


On peut faire plus simple :

for dir in */; do zip -9r $dir.zip $dir; done

Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#6 Le 03/08/2011, à 13:11

helly

Re : Zipper des repertoires séparement

Jme suis gouré entre : et ; !
@FruiT : ton script ne fait pas les repertoires cachés.

Dernière modification par helly (Le 03/08/2011, à 13:12)


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#7 Le 03/08/2011, à 13:28

ehmicky

Re : Zipper des repertoires séparement

On peut compresser et extraire en .zip sinon aussi avec 7z :

find . -maxdepth 1 -mindepth 1 -type d -execdir 7z u {}.zip {} \;

Dernière modification par ehmicky (Le 03/08/2011, à 13:31)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#8 Le 03/08/2011, à 13:30

helly

Re : Zipper des repertoires séparement

Ouais mais pourquoi faire du zip avec 7z ? Autant faire du .7z smile.
C’est plus mieux en plus !


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#9 Le 03/08/2011, à 13:32

ehmicky

Re : Zipper des repertoires séparement

Je trouve ici tongue


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#10 Le 03/08/2011, à 15:32

FRUiT

Re : Zipper des repertoires séparement

helly a écrit :

Jme suis gouré entre : et ; !
@FruiT : ton script ne fait pas les repertoires cachés.

Apparemment il n'y en aurait pas besoin vu la structure de ses répertoires.

Sinon il suffit de rajouter « shopt -s dotglob ».

Et il faut ne mettre ni « : », ni « ; » apres « do ».


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#11 Le 03/08/2011, à 17:33

clicgauche

Re : Zipper des repertoires séparement

Ceci fonctionne partiellement :

find . -maxdepth 1 -mindepth 1 -type d -execdir 7z u {}.zip {} \;

Les fichier zip sont bien créés mais dans les zip l'arborescence est la suivante :

82009/.zip ???
82009/a.dxf
82009/b.dxf
82009/c.dxf

or je ne voudrais que

a.dxf
b.dxf
c.dxf

Hors ligne

#12 Le 03/08/2011, à 17:43

helly

Re : Zipper des repertoires séparement

Fais la mienne !


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#13 Le 03/08/2011, à 18:03

clicgauche

Re : Zipper des repertoires séparement

for dir in $(find . -type d | grep -v "^.$") ; do  zip -9r $dir.zip $dir ; done

Pareil ! Il me met un arborescence dans les zip et un fichier ".zip"...

Hors ligne

#14 Le 03/08/2011, à 18:14

ehmicky

Re : Zipper des repertoires séparement

clicgauche a écrit :

Ceci fonctionne partiellement :

find . -maxdepth 1 -mindepth 1 -type d -execdir 7z u {}.zip {} \;

Les fichier zip sont bien créés mais dans les zip l'arborescence est la suivante :

82009/.zip ???
82009/a.dxf
82009/b.dxf
82009/c.dxf

or je ne voudrais que

a.dxf
b.dxf
c.dxf

Es-tu bien sûr de taper la commande telle quelle ? find . -type d imprime les noms de répertoire sans le slash final (qui pose ici problème) pour moi.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#15 Le 03/08/2011, à 18:16

clicgauche

Re : Zipper des repertoires séparement

Oui je suis sur (copier-coller)...

J’obtiens une arborescence dans les zip

Hors ligne

#16 Le 03/08/2011, à 18:26

clicgauche

Re : Zipper des repertoires séparement

vu pour les .zip (fichier cachés suite aux tests)

Par contre comment supprimer l'arborescence ?

Hors ligne

#17 Le 03/08/2011, à 18:32

Hizoka

Re : Zipper des repertoires séparement

c'est pas l'option -j que tu veux ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#18 Le 03/08/2011, à 19:27

clicgauche

Re : Zipper des repertoires séparement

-j n'est pas disponible sur 7z

Hors ligne

#19 Le 03/08/2011, à 19:40

Hizoka

Re : Zipper des repertoires séparement

je croyais que tu voulais zipper ?
si oui utilise zip...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#20 Le 03/08/2011, à 19:59

FRUiT

Re : Zipper des repertoires séparement

for dir in */; do zip -9r $dir.zip $dir/*; done

(pas testé mais ça devrait le faire)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#21 Le 03/08/2011, à 20:46

clicgauche

Re : Zipper des repertoires séparement

oui je veux des zip...

ceci :

for dir in */; do zip -9r $dir.zip $dir/*; done

ne fait rien apparemment il semble y avoir un pb sur les /.

Hors ligne

#22 Le 03/08/2011, à 23:06

aduxas

Re : Zipper des repertoires séparement

Si tu n'as pas de fichiers dans le répertoire (que des sous-répertoires), la méthode FRUiT marche en enlevant le slash:

for dir in *; do zip -9r $dir.zip $dir/*; done

Les zip contiennent les fichier avec le nom du répertoire.  Sinon,

for dir in $(find . -mindepth 1 -type d); do zip -9r ${dir##./}.zip $dir/*; done

Dernière modification par aduxas (Le 03/08/2011, à 23:08)

Hors ligne

#23 Le 04/08/2011, à 14:26

FRUiT

Re : Zipper des repertoires séparement

aduxas a écrit :

Si tu n'as pas de fichiers dans le répertoire (que des sous-répertoires), la méthode FRUiT marche en enlevant le slash

Et oui ca fait un double slash a un moment exact ! J'aurais de tester mais bon pas le temps sur le coup. Cela dit j'auais pluôt viré le deuxième (le premier sevant à distinguer les dossiers des fichiers)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#24 Le 04/08/2011, à 14:55

aduxas

Re : Zipper des repertoires séparement

FRUiT a écrit :

Cela dit j'auais pluôt viré le deuxième (le premier sevant à distinguer les dossiers des fichiers)

En fait, j'ai peur que non:  le nom du fichier zip contiendrait un slash.  En mettant "echo" au lieu de "zip -9r":

%mkdir A B
%touch {A..B}/{a..c}.txt
%ls A B
A:
a.txt  b.txt  c.txt

B:
a.txt  b.txt  c.txt

%for dir in */; do echo $dir.zip $dir/*; done
A/.zip A//a.txt A//b.txt A//c.txt
B/.zip B//a.txt B//b.txt B//c.txt

%for dir in *; do echo $dir.zip $dir/*; done
A.zip A/a.txt A/b.txt A/c.txt
B.zip B/a.txt B/b.txt B/c.txt

Hors ligne

#25 Le 04/08/2011, à 15:23

FRUiT

Re : Zipper des repertoires séparement

Je vois ce que tu veux dire pour les noms, bien que aucun de tes exemples ne correspond à enlever le 2ème / (celui de $dir/*).

A la rigueur ça pourrait donner :

for dir in */; do echo ${dir%/}.zip $dir*; done

En fait en enlevant le premier / (celui du pattern), for matche aussi d'éventuels fichiers contenus dans le répertoire courant (et du coup ça les zippe !). C'est quand même plus pertinent de ne matcher que les dossiers, quitte à faire un effort derrière. Après s'il y a que des dossiers dans le dossier en question, tant mieux, mais autant envisager le cas général.

Dernière modification par FRUiT (Le 04/08/2011, à 15:27)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne