#26 Le 27/11/2016, à 19: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 le problème solutionné, 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, à 07: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, à 07: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, à 12: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, à 13: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, à 16:20
- Compte anonymisé
Re : [Résolu] Renommer fichier PDF avec les données contenues dans celui-ci
pingouinux, je me permets
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, à 16: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, à 16:29)
#33 Le 28/11/2016, à 18: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, à 20: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, à 20:14)
Hors ligne