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 files
Tous 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