#1 Le 09/03/2017, à 10:52
- Arioch91
[RESOLU] Script pour extraire de fichiers zip certains fichiers
Bonjour.
Je sèche un peu pour parvenir à mes fins alors voilà.
J'ai environ 400 archives au format zip dans lesquelles je dois retrouver un fichier et un seul, puis l'extraire.
Le problème, c'est que je ne connais que le début du nom du fichier qui m'intéresse.
Si par exemple le nom du fichier qui m'intéresse dans l'une de ces archives est "toto_A100-10.txt", il peut s'appeler aussi "toto_A100-24.txt" dans un autre zip.
Comment envoyer dans un script shell la commande unzip en lui fournissant comme argument toto_A100 afin que le script m'extraie tous les fichiers qu'il trouvera commençant par ce nom ?
Dernière modification par Arioch91 (Le 09/03/2017, à 19:45)
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#2 Le 09/03/2017, à 12:36
- credenhill
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
hello
essayer (je n'ai pas testé)
unzip *.zip "toto_A100*"
Hors ligne
#3 Le 09/03/2017, à 19:20
- Arioch91
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
Ca marche, merci beaucoup !
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#4 Le 09/03/2017, à 19:25
- Arioch91
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
Edit : ah mince, non. Sur les 400 et quelques archives, il n'a extrait qu'un seul fichier.
Il retourne pour les autres archives "not matched" alors que je sais pertinemment qu'il y a des fichiers à extraire dedans.
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#5 Le 09/03/2017, à 19:46
- Arioch91
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
J'ai finalement trouvé !
Voici la solution :
#!/bin/bash
for i in `ls *.zip` ;
do
files=`unzip -l $i | grep toto_A100`
for j in $files ;
do
unzip $i $j
done
done
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#6 Le 09/03/2017, à 19:56
- Hizoka
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
arf...
for i in *.zip
do
files=$(unzip -l "${i}" | grep "toto_A100")
for j in "${files}" ;
do
unzip "${i}" "${j}"
done
done
et je pense pas que ça fonctionne car j ne contient pas que le nom du fichier ?!*
Edit :
Archive: logiciels.zip
caution: filename not matched: 26934
Archive: logiciels.zip
caution: filename not matched: 2013-02-28
Archive: logiciels.zip
caution: filename not matched: 23:16
Archive: logiciels.zip
...
j'ai raison, il essaie d'extraire toutes les infos...
Si tu es sûr qu'il n'y a qu'un seul fichier dans le zip à extraire et qu'il n'a pas d'espace dans son nom :
for i in *.zip
do
file=$(unzip -l "${i}" | grep "toto_A100")
unzip "${i}" "${file##* }"
done
Dernière modification par Hizoka (Le 09/03/2017, à 20:04)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 09/03/2017, à 20:22
- pingouinux
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
Bonsoir,
Je n'ai pas testé, mais je ferais simplement ceci :
for i in *.zip
do
unzip "$i" "toto_A100*"
done
Il y aura des problèmes si des fichiers d'archives différentes portent le même nom.
Hors ligne
#8 Le 10/03/2017, à 14:06
- credenhill
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
ou essayer
ls *zip | xargs -I{} unzip {} "toto_A100*"
Hors ligne
#9 Le 10/03/2017, à 18:00
- Compte anonymisé
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
ben sinon tout simple
unzip "*.zip" "toto_A100*"
avec les " autour de *.zip
#10 Le 10/03/2017, à 19:16
- Arioch91
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
Bonsoir.
Je vous assure que mon script shell a correctement fait le boulot.
Mais je vais garder vos idées sous le coude et les tester également.
8 Go RAM - SSD 120 Go + SATA 1 To - Ubuntu 14.04 LTS
Hors ligne
#11 Le 10/03/2017, à 19:40
- pingouinux
Re : [RESOLU] Script pour extraire de fichiers zip certains fichiers
Je vous assure que mon script shell a correctement fait le boulot.
Si tu parles de ton script en #5, il est inutilement compliqué. De plus, il ne marchera pas si les noms de tes fichiers contiennent des espaces.
Hors ligne