Aller au contenu

Photostation.rename.file : Renommer Les Photos Fonction De Leurs Date


Messages recommandés

hello,

je cherche a faire un script qui renomme mes photos fonction de la date de prise de vue, ca, j'ai trouvé.

je cherche également a faire en sorte qu'un fichier ayant déjà un nom correct ne soit pas renommer. autrement dit, si le debut du fichier correspond a la date de prise de vue, on renomme pas.

il en va de soit qu'a chaque renommage, il ne doit pas ecraser un fichier déjà existant !

voici ce que j'ai... je doit pas etre loin mais....

#!/bin/sh

rep=/volume1/NetBackup/test/
LOG_FILE=/volume1/NetBackup/PhotoStation.rename.file.sh.log


{
find "$rep" -name "*.jpg" ! -path "*/#recycle/*" ! -path "*/@*" |  
	while read line
		do 
		# recuperation de la date du fichier
		IFS=': '
		set $(exiv2 -g Exif.Image.DateTime -Pv "$line")
		unset IFS
		year=$1 month=$2 day=$3 hour=$4 minute=$5 second=$6
		#on recuper le nom du fichier
		filename=${fullfilename%.*}
			# on test si le fichier porte deja un nom correct
			if [$filename -ne "$1-$2-$3_$4-$5-$6*"]
				then
				# on renomme le fichier 
				exiv2 -Fr "%Y-%m-%d_%H-%M-%S" "$line"; # essayer avec :parentname
			fi
	done
} >& $LOG_FILE
Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

Je me demande de quel chapeau sort ce "fullfilename"
De plus le formalisme ${nom%.*} est typiquement (et peut être exclusivement) Korn shell

**edit**

Au temps pour moi, je constate sur sa man page que ash (qui est le shell de DSM) connait ce formalisme.

Mais reste ma question sur la variable "fullfilename"

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

j'avais ca :

filename=${fullfilename%.*}

Ca c'est l'affectation de la variable "filename", moi c'est sur "fullfilename" que je me pose des questions, comment peut-elle prendre une valeur?

Ensuite faudra que tu explique ce que tu veux faire par le test:

if [$filename -ne "$1-$2-$3_$4-$5-$6*"]

le "*" à l'intérieur des quotes va être interprété littéralement, pas comme un wildcard

Lien vers le commentaire
Partager sur d’autres sites

La ca m'a l'air bon:

#!/bin/ash
PATH=/bin:/usr/bin:/usr/syno/bin # important si lancé en cron
rep=~/tmp/A_Classer              #  /volume1/NetBackup/test/
LOG_FILE=/volume1/NetBackup/PhotoStation.rename.file.sh.log

#   creation fichier log si stdout n'est pas un tty	
[ -t 2 ] || exec > $LOG_FILE 2>&1

find "$rep" -name "*.jpg" ! -path "*/#recycle/*" ! -path "*/@*" |  
while read line
do 
    #on recupere le nom "court" du fichier
    filename=${line##*/}
    filename=${filename%.*}

    # recuperation de la date du fichier
    IFS=': '
    set $(exiv2 -g Exif.Image.DateTime -Pv "$line")
    unset IFS
    year=$1 month=$2 day=$3 hour=$4 minute=$5 second=$6

    # on test si le fichier porte deja un nom correct
    case $filename in 
        "$1-$2-$3_$4-$5-$6"*)
            # le nom est OK
            echo "not renaming $line" >&2
            ;;
        *)
            echo "renaming $line" >&2
	    exiv2 mv -fF -r "%Y-%m-%d_%H-%M-%S" "$line"; # essayer avec :parentname
            ;;
    esac

done

Notes:

  • le "case" a la place du test ([ "$truc" -eq "machin" ]) car les wildcards ("*") ne sont pas supportés ici.
  • affectation du PATH pour s'assurer de la visibilité de la commande "exiv2"
Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

avec le if, j'essai de verifier si le nom du fichier est different de "$1-$2-$3_$4-$5-$6*" qui normalement, est la date du fichier, donc potentiellement le debut du nom du fichier...

Le test ([ ... ]) des shell sh, ash et bash ne tient pas compte des "*" et "?" et les traite comme des caractères normaux.

Seul le korn shell (ksh) supporte cela, sous réserve d'utiliser le format étendu avec doubles crochets: [[ ... ]] et de sortir les caractères jokers des quotes.

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

pas bete le coup du case....j

e note pour le "*"... l'univers windows... :-)

par contre, il a l'air de s'arreter apres le premier dossier traité...

si je met juste ce code, ca marche bien pour tout les dossiers....

{
find "$rep" -name "*.jpg" ! -path "*/#recycle/*" ! -path "*/@*" |  
	while read line
		do 
			exiv2 -Fr "%Y-%m-%d_%H-%M-%S" "$line"; # essayer avec :parentname
		
		done
} >& $LOG_FILE

pourquoi un mv apres le exiv2?

Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

pas bete le coup du case....

par contre, il a l'air de s'arreter apres le premier dossier traité...

Je ne vois pas de raison pour cela, c'est le "find" qui assure le parcours

si je met juste ce code, ca marche bien pour tout les dossiers....

{
find "$rep" -name "*.jpg" ! -path "*/#recycle/*" ! -path "*/@*" |  
	while read line
		do 
			exiv2 -Fr "%Y-%m-%d_%H-%M-%S" "$line"; # essayer avec :parentname
		
		done
} >& $LOG_FILE

je ne trouve pas de différence de fond avec mon code :wacko:

pourquoi un mv apres le exiv2?

J'avoue découvrir cette commande ("exiv2") et j'ai utilisé son aide en ligne pour comprendre comment l'utiliser:

fserv> exiv2 -h
Usage: exiv2 [ options ] [ action ] file ...

Manipulate the Exif metadata of images.

Actions:
/../
  mv | rename   Rename files and/or set file timestamps according to the
                Exif create timestamp. The filename format can be set with
                -r format, timestamp options are controlled with -t and -T.

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

oui, j'utilise exiv2 puisque c'est dispo, a defaut d'avoir exiftool....

et j'ai trouvé.... en fait, c'est de ma faute... il ne renome pas s'il n'y a pass de date exif dans le fichier (normal) et j'avais mis des fichier de ce type afin de tester....

donc je continue mes test, mais ca a l'air nickel ! merci

je lache un peu avant que madame rale et prochaine etape, loger les fichier non traité.

encore merci

Lien vers le commentaire
Partager sur d’autres sites

pour ceux que ca interesse:

http://www.nas-forum.com/forum/files/go/372f4ecea37d7d622bcd8a745dff7f0a/photostationrenamefile

edit: on peut pas changer le titre du sujet? histoire que ce soit plus claire pour le suivit du script...

et peut etre aussi le deplacer dasn photostation...

Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

on peut pas changer le titre du sujet? histoire que ce soit plus claire pour le suivit du script...

C'est à toi de le faire en tant qu'initiateur du fil.

Fait que tu passes en modification sur le premier post, puis passer en mode "éditeur complet" et la tu aura la possibilité d'éditer le titre.

Lien vers le commentaire
Partager sur d’autres sites

j'y pensais, mais je trouvais ca nettement plus sympa d'avoir une liste de mime plutot qu'une liste d'extensions...

ils sont chiant a emputer l'OS d'autant d'utilitaire....

Bof ... même sous Windows il n'y a jamais eu en standard, d'équivalent de la commande unix "file": la aussi c'est l'extension qui fait foi et on se débrouille très bien sans après tout.

**EDIT**

Sous DSM on peut s'aider du fichier "/usr/syno/etc/mimetypes.txt" pour simplifier radicalement le script que j'ai donné en exemple (à coup de sed et/ou awk)

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

pas mal... mais ca ressemble a un oublie d'un truc utilisé avant puis abandonné....

en cherchant dans l'os, j'ai trouver des doc de DSM 3, des lien symbolique mort et le fait qu'avant il y avait exiftool d'implanté avant d'etre remplacer par exiv2 me donne pas super confiance dans ce genre de fichier.

mais l'idée me va... j'vais voir pour faire un fichier contenant les extentions supporté de l'inclure dans le find.

ou alors est ce que ca vaut pas le coup de chercher a faire une interface graphique? je constante qu'il n'y a pas de package la dessus...

Lien vers le commentaire
Partager sur d’autres sites

pour l''instant, je reste sur du script, on verra plus tard...

du coup, voila la version 0.51

http://www.nas-forum.com/forum/files/get/e7d17fb7f7504ebd860e2753c7ef7c87/736-PhotoStation.rename.file.sh.zip

PS: ya pas un admin dans le coin pour remettre ce sujet dans la bonne section?

Merci


Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.