Ce script est destiné à extraire de plusieurs .zip contenant un répertoire
avec des notices, dont les fichiers contiennent l'identifiant, les notices dont
les identifiants sont donnés dans un fichier d'identifiants.
$ unzip -l crossref-2017.zip
Archive: crossref-2017.zip
Length Date Time Name
--------- ---------- ----- ----
0 2019-01-30 14:12 2017/
6874 2019-01-30 13:31 2017/10.1016_j.bulcan.2017.05.002.xml
3673 2019-01-30 12:43 2017/10.2217_fon-2016-0441.xml
2931 2019-01-30 13:57 2017/10.1016_j.actpha.2017.07.001.xml
18155 2019-01-30 13:29 2017/10.1084_jem.20170229.xml
...
10096 2019-01-30 12:42 2017/10.1093_jac_dkw437.xml
2318 2019-01-30 14:05 2017/10.4000_insitu.15606.xml
35323 2019-01-30 14:01 2017/10.1186_s12885-017-3794-3.xml
19636 2019-01-30 13:58 2017/10.1073_pnas.1703790114.xml
--------- -------
1604000585 93072 filesTous les fichiers d'entrées doivent avoir un début de nom de fichier en commun
(ex: crossref-2017.zip, crossref-2016.zip, où crossref est en commun).
En effet, c'est ce début commun qui formera le début du nom du fichier résultant.
Par exemple, il vaut mieux utiliser crossref que crossref-201 comme premier
paramètre de la commande, car crossref produire un fichier
crossref_extrait.zip alors que crossref-201 (donné par la complétion de
bash) donnerait crossref-201_extrait.zip (moins compréhensible humainement).
On donne en premier paramètre une partie commune au début de tous les fichiers
.zip dans lesquels on va chercher les notices.
En deuxième paramètre, on donne le nom du fichier texte qui contient les identifiants (partie discrimante des noms des fichiers à extraire), en en mettant un par ligne.
$ ./extrait.sh hal hal_428.txt
$ ll -h hal_*
-rw-rw-r-- 1 parmentf parmentf 5,6K déc. 13 14:41 hal_428.txt
-rw-r--r-- 1 parmentf parmentf 1,2M déc. 13 15:32 hal_extrait.zip