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 04/04/2014, à 22:33

remssssss

commande unzip sur nombreux fichiers

Bonjour,
Voila mon pb : j'ai de nombreux fichiers zip dans un repertoire, que je voudrais dezipper "d'un coup", donc en ligne de commande.
Le truc, c'est que ces archives (.zip) ont des noms differents (jusque la, ca va), mais contiennent un dossier qui lui porte le meme nom, quelque soit le .zip
exemple :
"archive1.zip" contient un document "DOC.exe",
"archiveAB.zip" contient egalement un document "DOC.exe", (different mais de meme nom) ...etc

Du coup, la commande

unzip '*.zip'

ne s'applique pas. J'ai essayé de faire qqch avec

unzip -B '*.zip'

, mais le resultat n'est pas satisfaisant.
D'ou ma question; est il possible de dezipper des fichiers .zip en precisant le nom que l'on souhaite donner aux fichiers ?

dans ce cas, ce serait donner le meme nom que l'archive... en reprenant l'exmple j'aimerai unzipper "archive1.zip" et donner au DOC.exe extrait le nom archive1.exe
idem pour les autres archives : "archiveAB.zip" --> "archiveAB.exe" ....etc

QQun saurait il faire ca?
Merci !!!

Hors ligne

#2 Le 04/04/2014, à 23:19

Zakhar

Re : commande unzip sur nombreux fichiers

Il faut que tu fasses un "mini-script"

En une ligne :

for f in *.zip; do dir="$(echo "$f" | head -c-4)"; mkdir "$dir"; cd "$dir"; unzip "../$f"; cd ..; done

Explications :
- le 'for' va prendre en argument tous les .zip de ton répertoire et donner tour à tour la valeur d'un élément à la variable f
- la premièce commande retire l'extension .zip de la variable f
- la suivante crée le répertoire
- on va dans ce répertoire
- on dézippe
- on remonte au répertoire

C'est brut de décoffrage sans test d'erreurs.
Ca se plantera par exemple si tu as déjà une répertoire qui porte le même nom qu'un fichier .zip... mais c'était pour faire simple !

Dernière modification par Zakhar (Le 04/04/2014, à 23:20)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 05/04/2014, à 10:19

remssssss

Re : commande unzip sur nombreux fichiers

Merci pour ce petit script, qui fonctionne bien.
Par contre, ca ne fait pas exactement ce que je voulais. Ici, on crée des dossiers qui ont le nom de l'archive, mais le fichier dezippé garde toujours son nom "DOC.exe".
J'aurais aimé qu'il prenne lui aussi le nom de l'archive... Comment faire cela?

...edit ...

En cherchant un peu je suis parvenu a ce que je voulais! J'ai rajouté un

 mv *.exe "$dir".exe 

qui va bien, pour renommer les fichiers extraits
Merci encore pour ton mini script qui m'a appris pas mal de choses (je suis debutant total en linux et en programmation)

Dernière modification par remssssss (Le 05/04/2014, à 12:07)

Hors ligne