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.

#26 Le 27/11/2016, à 20:34

erresse

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

  mv -i "$a" "$(nouveau_nom "${commune%\ \(*} - ${departement%\ \(*}")"

Bonsoir,
Essaie juste de remplacer ta ligne "mv..." par celle-ci, ça devrait marcher.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#27 Le 28/11/2016, à 08:14

zazsze

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

Bonjour,
Cela ne fonctionne pas. Cela doit être dû à "-f3" qui ne ramène que le 3ème champ, donc le premier nom de la commune.

Hors ligne

#28 Le 28/11/2016, à 08:25

pingouinux

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

Bonjour,
Essaye ceci

#!/bin/bash
nouveau_nom() {
   racine=$1; num=1
   [ -f "$racine.pdf" ] || { echo "$racine.pdf"; return; }
   while true
   do
      [ -f "$racine-$((++num)).pdf" ] || break
   done
   echo "$racine-$num.pdf"
}
autre_dossier="À_REMPLIR"
for a in *.pdf
do
  commune=$(pdftotext "$a" -|sed -n '/^Commune : /{s/.*: \(.*\) ([Cc]ode.*/\1/p;q}')
  departement=$(pdftotext "$a" -|sed -n '/^Département : /{s/.*: \(.*\) ([Cc]ode.*/\1/p;q}')
  mv -i "$a" "$autre_dossier/$(nouveau_nom "$commune - $departement")"
done

Hors ligne

#29 Le 28/11/2016, à 13:42

zazsze

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

Bonjour "pingouinux" et encore une fois merci. Tout fonctionne à merveille.
Si je peux encore abuser de vos connaissances, j'aimerai savoir s'il est possible de garder une partie du nom d'origine de mon pdf. À savoir, mon fichier initial se nomme "Rapport_33_01.pdf" et je souhaiterai garder "33_01".

Hors ligne

#30 Le 28/11/2016, à 14:18

pingouinux

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

Il faut que tu précises, avec quelques exemples (noms complets de départ et d'arrivée).

Hors ligne

#31 Le 28/11/2016, à 17:20

Compte anonymisé

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

pingouinux, je me permets smile

pour extraire déjà le 33_01 je propose

origine=$(sed -r 's/.*_(.*_.*)\.pdf/\1/' <<< "$a")

ce qui donne :

#!/bin/bash
nouveau_nom() {
   racine=$1; num=1
   [ -f "$racine.pdf" ] || { echo "$racine.pdf"; return; }
   while true
   do
      [ -f "$racine-$((++num)).pdf" ] || break
   done
   echo "$racine-$num.pdf"
}
autre_dossier="À_REMPLIR"
for a in *.pdf
do
  origine=$(sed -r 's/.*_(.*_.*)\.pdf/\1/' <<< "$a")
  commune=$(pdftotext "$a" -|sed -n '/^Commune : /{s/.*: \(.*\) ([Cc]ode.*/\1/p;q}')
  departement=$(pdftotext "$a" -|sed -n '/^Département : /{s/.*: \(.*\) ([Cc]ode.*/\1/p;q}')
  mv -i "$a" "$autre_dossier/$(nouveau_nom "$commune - $departement - $origine")"
done

ensuite il faut mettre $origine quelque par dans le nom de sortie (là je te l'ai mis après le département)

#32 Le 28/11/2016, à 17:28

Compte anonymisé

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

@pingouinux

   while true
   do
      [ -f "$racine-$((++num)).pdf" ] || break
   done
echo "$racine-$num.pdf"

on peut pas le simplifier en quelque chose comme ça ?

while [ -f "$racine-$num.pdf" ]
   do
      ((num++))
   done
echo "$racine-$((++num)).pdf"

ça me parait plus naturel

Dernière modification par Compte anonymisé (Le 28/11/2016, à 17:29)

#33 Le 28/11/2016, à 19:00

pingouinux

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

@Anonyme68 #31 :
Oui, si tous les noms de fichier ont exactement la même syntaxe.

@Anonyme68 #32 :
Tu as raison, ma boucle n'était pas très astucieuse. Je ferais ceci :

num=1; while [ -f "$racine-$((++num)).pdf" ]; do :; done
echo "$racine-$num.pdf"

Il ne faut pas incrémenter de nouveau num au niveau du echo.

Hors ligne

#34 Le 28/11/2016, à 21:14

zazsze

Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci

C'est parfait.
Vraiment merci à vous tous.
Je passe mon post en résolu.

Dernière modification par zazsze (Le 28/11/2016, à 21:14)

Hors ligne