Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/02/2011, à 00: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, à 16: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