#1 Le 15/02/2011, à 23:10
- Herve34
Renommer des pdf à partir du premier signet
Bonjour à tous,
Je vous sollicite pour un petit coup de main,
j'ai à renommer de nombreux fichiers pdf à partir du premier signet inclut dans chaque fichier.
J'ai bien essayer de me servir de ce post pour y arriver mais en vain.
J'aimerai choisir le texte qui vient après la première occurrence de " BookmarkTitle: " pour renommer mon fichier mais je sèche.
Une complication supplémentaire: certains signets contiennent des caractères ne pouvant pas être utilisés dans des noms de fichier, le / par exemple ....
J'attends vos conseils !!
Merci
Hors ligne
#2 Le 16/02/2011, à 15:43
- Herve34
Re : Renommer des pdf à partir du premier signet
Voila ou j'en suis , c'est du bidouillage de l'autre post :
#!/bin/bash
# Boucle listant les pdf du dossier et des sous dossiers
while read pdf
do
# scanne les infos du pdf
infos=$(pdftk "${pdf}" dump_data)
# Boucle cherchant des infos les signets
for i in "BookmarkLevel: 1"
do
# récupération de la ligne de i
ligne=$(grep -n "${i}" <<< "${infos}")
# On enlève tout jusqu'au 1er : , ce qui nous donne la ligne
ligne=${ligne%%:*}
# On enleve 1 à ce numéro afin d'avoir la ligne qui précéde et qui contient les données du premier signet
ligne=$((${ligne} - 1))
# on remplie la variable nom
if [[ ${i} == "BookmarkLevel: 1" ]]
then
nom=$(sed -n "s/BookmarkTitle: // ; ${ligne}p" <<< "${infos}")
nom=$(cut -c-150 <<< "${nom}")
fi
done
# Vérification de l'existance d'un fichier portant le même nom
if [[ -e "${pdf%/*}/${nom}.pdf" ]]
then
echo "le fichier : '${pdf}' doit être renommé en '${pdf%/*}/${nom}.pdf' mais ce fichier existe déja. Fichier sauté."
continue
# Si pas de fichier déjà existant, on renomme le fichier
else
mv "${pdf}" "${pdf%/*}/${nom}.pdf"
fi
done < <(find . -iname '*.pdf')
J'ai un problème avec les slash, les é è à ç etc ... et j'aimerai aussi que lorsque les fichiers existent le script ajoute un indice ...
Hors ligne