#1 Le 03/04/2015, à 13:11
- louis3d
Renommer en masse d'après une liste de noms
Supposons que vous ayez scanné un gros pavé de feuilles (disons des bulletins d 'adhésions). Il vous faut renommer chacun des fichiers du nom de l'adhérent (genre changer SCAN_0234.pdf en MARTIN_Denis.pdf). Pas facile ! Heureusement vous avez pris soin de les scanner dans l'ordre de leur numéro d'adhérent, et vous disposez d'une liste de tous vos adhérents (nouveaux_noms.txt).
Voici comment procéder :
D'abord si comme moi votre scan initial est un fichier pdf unique, il faut l'éclater en pages individuelles :
pdftk tous_adherents.pdf burst
Vous voici avec une belle liste de fichiers pdf (pg_0001.pdf, pg_0002.pdf, etc...)
Il vous faut ensuite procéder ainsi :
# Faire la liste des anciens noms :
ls pg_*.pdf > anciens_noms.txt
# Il ne faut pas d'espaces dans la liste des nouveaux noms :
sed -i 's/ /_/g' nouveaux_noms.txt
# et je ne sais pas si c'est utile mais dans le doute j'ai enlevé les accents dans les nouveaux noms :
sed -i 'y/āáǎàēéěèīíǐìîōóǒòūúǔùǖǘǚǜûĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛÛ/aaaaeeeeiiiiioooouuuuuuuuuAAAAEEEEIIIIOOOOUUUUUUUUU/' nouveaux_noms.txt
# On va ensuite accoler ces deux listes dans un nouveau fichier
paste -d " " anciens_noms.txt nouveaux_noms.txt > anciens_nouveaux.txt
# Et enfin en une commande, on renomme :
xargs -n 2 mv <anciens_nouveaux.txt
Voilà, ça m'a été bien utile.
Hors ligne