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 08/03/2019, à 15:26

emil31

[Résolu] Renommer fichiers via listes

Bonjour à tous,

Je viens vers pour avoir un peu d'aide.

Je tente de renommer massivement plusieurs centaines de fichiers pour lesquels je possède (sur un fichier .txt) le nom original et (sur un autre fichier .txt), le nom souhaité.

J'aimerai donc créer un script qui recherche les fichiers issus du premier fichier et qui renomme en fonction du second.

Ex : "toto.aout.2018.png" vers "toto 08/2018.png"

Je ne veux donc que modifier le fichier présent dans la première liste qui vaudra "toto.aout.2018.png".
Les fichiers à modifier étant sur plusieurs volumes, la commande doit s'effectuer sur la racine de ma machine.

A mon avis, je dois d'abord lancer un find basé sur le fichier .txt original, faire un mv grâce au fichier .txt modifié, puis incrémenter et recommencer.

Dis comme ça c'est simple...

Merci d'avance.

Dernière modification par emil31 (Le 18/03/2019, à 12:45)

Hors ligne

#2 Le 08/03/2019, à 15:39

Watael

Re : [Résolu] Renommer fichiers via listes

salut,

je possède (sur un fichier .txt) le nom original et (sur un autre fichier .txt), le nom souhaité.

comment se fait la correspondance ? comment as-tu fait ?
tu as le nom des fichiers, mais pas le chemin qui y mène ? dommage.

un nom de fichier ne peut pas contenir de slash.

Dernière modification par Watael (Le 08/03/2019, à 18:09)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#3 Le 08/03/2019, à 16:07

emil31

Re : [Résolu] Renommer fichiers via listes

Watael a écrit :

salut,

je possède (sur un fichier .txt) le nom original et (sur un autre fichier .txt), le nom souhaité.

comment se fait la correspondance ? comment as-tu fait ?
tu as le nom des fichiers, mais pas le chemin qui y mène ? dommage.

un nom de fichier ne peux pas contenir de slash.

J'ai d'abord fait un find avec les grep nécessaires, j'ai enregistré le résultat dans le premier fichier .txt, j'ai ensuite modifié les résultats à mon gré et les enregistré dans le second fichier .txt.

J'ai les noms et les chemins des fichiers, je les ai séparés avec un tableur.

Hors ligne

#4 Le 08/03/2019, à 16:15

diesel

Re : [Résolu] Renommer fichiers via listes

Je crois qu'il faudrait que tu nous fournisse au moins un extrait de ces deux fichiers.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#5 Le 08/03/2019, à 16:35

emil31

Re : [Résolu] Renommer fichiers via listes

diesel83140 a écrit :

Je crois qu'il faudrait que tu nous fournisse au moins un extrait de ces deux fichiers.

Amicalement.

Jean-Marie

La commande :

find /  -name *.jpg | grep [0-9].jpg | grep manon > renommerimages.txt

Une partie des résultats du fichier original :

/volume1/Sauvegarde Photo/Photos manon/IMG_20150613_141515.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_20150621_130804.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_20150605_203822.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_20150614_185426.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_20150605_220621.jpg

Le résultat attendu :

/volume1/Sauvegarde Photo/Photos manon/IMG 2015 juin 141515.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_2015 juin 130804.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_2015 juin 203822.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_2015 juin 185426.jpg
/volume1/Sauvegarde Photo/Photos manon/IMG_2015 juin 220621.jpg

Ce n'est qu'un exemple, je rappelle que la transformation a déjà été faite à la main, je souhaite juste pouvoir retrouver la photo, la renommer tout ca en fonction du fichier original et du résultat attendu.

Hors ligne

#6 Le 08/03/2019, à 18:21

Watael

Re : [Résolu] Renommer fichiers via listes

d'un coup je comprends la mine renfrognée du maçon à qui j'ai demandé de construire un appenti sur des fondations que j'étais tellement fier d'avoir faites de mes mains...

au code.
il faut donc lire les deux fichiers "simultanément".
en bash :

while read -r -u $fd1 fic1; do read -r -u $fd2 fic2; echo "mv \"$fic1\" \"$fic2\""; done {fd1}<fichierSrc {fd2}<fichierDst

Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#7 Le 08/03/2019, à 22:34

emil31

Re : [Résolu] Renommer fichiers via listes

Watael a écrit :

d'un coup je comprends la mine renfrognée du maçon à qui j'ai demandé de construire un appenti sur des fondations que j'étais tellement fier d'avoir faites de mes mains...

au code.
il faut donc lire les deux fichiers "simultanément".
en bash :

while read -r -u $fd1 fic1; do read -r -u $fd2 fic2; echo "mv \"$fic1\" \"$fic2\""; done {fd1}<fichierSrc {fd2}<fichierDst

Merci pour ta réponse, j'essaye ca demain.

Hors ligne

#8 Le 08/03/2019, à 23:29

MicP

Re : [Résolu] Renommer fichiers via listes

Bonjour

IMG_20150613_141515

Si je me souvient bien dans mon ancien smartphone,
les fichiers étaient aussi nommés de cette façon,
et en y regardant de plus près, je me suis rendu compte
que les derniers chiffres correspondaient à l'heure, minutes et secondes.

Par contre, la méthode de renommage proposée par emil31
risque de provoquer des collisions
dans les cas ou quelques fichiers auraient été créés
le même mois, pas le même jour du mois, mais à la même heure.

De plus, la méthode de nommage d'origine
permet de les trier par date/heure par un simple tri alphanumérique
…encore que, si dans ces fichiers il y a un TAG de type EXIF,
il sera facile de retrouver les date/heure (et peut-être aussi latitude et longitude)

Sinon, puisque tu as utilisé un tableur,
tu peux aussi bien utiliser le fichier avec ton tableur
pour y créer directement une ligne de commande pour chacun des fichiers à renommer
Le fichier final sera la suite des lignes de commandes à exécuter.

Dernière modification par MicP (Le 09/03/2019, à 12:07)

Hors ligne

#9 Le 12/03/2019, à 12:48

emil31

Re : [Résolu] Renommer fichiers via listes

Bonjour,

J'ai créé un fichier .sh avec :

while read -r -u $fd1 fic1;
do read -r -u $fd2 fic2;
echo "mv \"$fic1\" \"$fic2\"";
done {fd1}<source.txt {fd2}<destination.txt

Cela ne m'affiche que le nom des fichiers lus.

J'ai dû louper quelque chose  hmm

Hors ligne

#10 Le 12/03/2019, à 13:09

Watael

Re : [Résolu] Renommer fichiers via listes

si ça correspond à ce que tu attends, change la ligne [color]echo "mv \"...[/color] par celle-ci :

mv "$fic1" "$fic2"

les point-virgule ne sont nécessaires que sur les lignes de commandes (one-liner).
quand le script est sur plusieurs lignes, c'est le passage à la ligne qui les remplace.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#11 Le 18/03/2019, à 10:07

emil31

Re : [Résolu] Renommer fichiers via listes

Bonjour,

J'ai fait un mix de vos deux réponses, j'étais bloqué par les espaces, apostrophes et autres caractères spéciaux dans les fichiers sources et destinations pour la méthode "script", via excel, j'ai pu faire enchaîner les commandes.

Merci pour vos retours.

Hors ligne

#12 Le 18/03/2019, à 12:50

Watael

Re : [Résolu] Renommer fichiers via listes

les variables étaient bien entre guillemets ?
il faut toujours mettre les variables entre guillemets.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne