logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-01-2016 21:25:16

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

[Résolu] Renommer des fichiers en lot dans Nautilus

Bonsoir les DF,

Je me casse les dents sur un truc tout bête : pourvoir sélectionner plusieurs fichier images dans Nautilus et les renommer en une seule fois.

Sous W = sélection de plusieurs photos -> clic droit -> renommer -> Toto
Et elles sont renommées Toto (1), Toto (2), Toto (3) ... etc

Avec Nautilus si je sélectionne plusieurs photos, je n'ai plus l'option renommer avec le clic droit.
Du coup il faut que je les renomme une par une ... pas glop.

Quelqu'un connaît la combine ?
J'ai cherché sur le forum, dans le wiki et sur le oueb mais rien, nada, nichts. Où alors je n'utilise pas les bons mots clés hmm

Dernière modification par Mercredi (14-01-2016 13:40:28)

Hors ligne

#2 13-01-2016 21:31:20

Anonyme
Invité

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Un script au cas où qui fonctionne très bien :

(le rendre exécutable)


#!/bin/bash

# http://nicofo.tuxfamily.org
# 21/10/06 : v1 : version de base - photos uniquement (renamePhotos)
# 10/12/06 : v2 : tout type de fichier      (renomme)
# 17/03/07 : v3 : ajout option --comment
# 30/04/07 : v4 : ajout option --addComment|-a
# 07/09/07 : v5 : ajout addComment sur une seule photo
# 16/10/08 : v6 : ajout option -i
# 06/09/09 : v7 : diaporama : ajout options --dHP / --dCANON
# 10/10/09 : v8 : fusion avec le script 'datePhotos' (-d|--date), ajout --undo et --diapo
#                 nouvelle version addComment (-a), ajout supComment (-s)
# 03/01/10 : v8.1 : ajout de "TMPTMP" pour toutes les photos
# 28/02/10 : v8.2 : correction bug avec variable 'index' => 'index_com'
# 13/05/10 : v8.3 : --dCANON accepte les noms de fichiers en majuscules
# 14/05/10 : v8.4 : utilisation de jhead au lieu de exiftool
# 28/05/10 : v9 : amélioration traitement --dCANON et --dHP
# 08/08/10 : v10 : addComment : accepte comme arguments "begin, end, comment"
# 17/10/10 : v11 : ajout option --min (extension en minuscules)
# 05/01/11 : v11.1 : ajout option --maj (extension en majuscules)
# 30/04/11 : v12 : affichage "(inchangé)" dans 'addComment'
# 23/08/12 : v13 : prise en compte des photos NIKON FSCNxxxx.JPG et RSCNxxxx.JPG
#                 (ajoute commentaire dans nom photo) et des vidéos .avi et .mov
# 20/01/13 : v13.1 : déplacer /tmp/renomme.undo -> ~/.renomme.undo
# 28/10/13 : v14 : compatible vidéos .mp4 ; addComment accepte les vidéos (variable MOTIF)
#                  nombre de digits = au minimum celui donné par -i|--index
#                  ajout options --titre et --renum
# 21/12/13 : v15 : ajout option --exclude
# 04/01/14 : v15.1 : clean utilisation de ls ($optionLS revu et $CHRONO ajouté)
#                  ajout option --exclude-motif
# 12/01/14 : v15.2 : --exclude-motif amélioré et traité comme --exclude

# 1) Obtenir les metadata d'une photo avec ImageMagick :
# identify -format %[EXIF:*] photo.jpg      # Toutes
# identify -format %[EXIF:DateTimeOriginal] photo.jpg # Juste la date de prise de vue
#
# 2) Obtenir les metadata d'une photo avec exiftool :
# exiftool -"DateTimeOriginal" -s -s -s photo.jpg
#
# 3) Obtenir les metadata d'une photo avec jhead :
# jhead photo.jpg | grep Date/Time | grep [0-9].* -o
#   ou  jhead photo.jpg | awk '$1=="Date/Time" {print $3 " " $4 }'  #plus rapide

usage()
{
  echo -e "\033[1;4mUsage\033[0m : $(basename $0) [-d|--date|-c|--chronologique]\n\t\t[-n|--nospace] [-i|--index <nombre>] [--min|--maj]\n\t\t[--titre] [--comment] [-r|--renum] [--diapo] [--dHP] [--dCANON]\n\t\t[-e|--exclude <fichier>] [-em|--exclude-motif <motif>]\n\t\t[-y|--noconfirm] [dossier] [nomFichiers]"
  echo -e "        $(basename $0) -d|--date [--check] [--affiche] [--ajoutDate]"
  echo "        $(basename $0) -a|--addComment  [<nombre départ> [<nombre fin>] [commentaire]]"
  echo "        $(basename $0) -s|--supComment  [<nombre départ> [<nombre fin>]]"
  echo "        $(basename $0) --undo"
  echo
  echo -e "        \033[1mCritères de renommage :\033[0m"
  echo -e "          \033[34m-d|--date\033[0m (photos) ==> tri en fonction de la date contenue dans les\n\t\t\t\t données EXIF"
  echo -e "          \033[34m-c|--chronologique\033[0m ==> tri chronologique (date du fichier)"
  echo "                  par défaut ==> tri alphabétique"
  echo
  echo -e "        \033[1mOptions générales :\033[0m"
  echo -e "          \033[34m-n|--nospace\033[0m : n'ajoute pas d'espace dans le nom des fichiers"
  echo -e "          \033[34m-i|--index\033[0m : index à partir duquel les fichiers sont numérotés\n\t\t(1 par défaut) ; les 0 en tête sont préservés (ex. : 001)"
  echo -e "          \033[34m--min / --maj\033[0m : met l'extension du fichier en minuscules/majuscules"
  echo -e "          \033[34m--titre\033[0m : conserve le nom du fichier (ex. : \033[3mphoto\033[0m 45 comment.jpg)"
  echo -e "          \033[34m--comment\033[0m : conserve les éventuels commentaires dans le nom du\n\t\tfichier (ex. : photo 45 \033[3mcomment\033[0m.jpg)"
  echo -e "          \033[34m-r|--renum\033[0m : équivalent de --titre --comment"
  echo -e "          \033[34m-e|--exclude\033[0m : fichier à exclure du renommage"
  echo -e "          \033[34m-em|--exclude-motif\033[0m : motif de fichier à exclure du renommage (ex. :\n\t\tsi motif='test', tous les fichiers contenant 'test' sont exclus)"
  echo -e "          \033[34m--diapo\033[0m : tient compte d'une numérotation diaporama dans le nom du\n\t\tfichier (ex. : photo \033[3m45_4\033[0m.jpg)"
  echo -e "          \033[34m--dHP / --dCANON\033[0m : tient compte des fichiers diaporama HP / CANON\n\t\t(fichiers : hrxx0123.jpg / sta_0123.jpg)"
  echo -e "          \033[34m-y|--noconfirm\033[0m : ne demande pas de confirmation avant le renommage"
  echo
  echo -e "          \033[34mdossier\033[0m : renomme les fichiers du dossier"
  echo "                    Si non donné, dossier courant par défaut"
  echo -e "          \033[34mnomFichiers\033[0m : 1) avec l'option --date : ne prend en compte que les\n\t\t\t   photos du nom '*nomPhotos*.jpg'"
  echo -e "                        2) sans l'option --date : renomme les fichiers donnés.\n\t\t\t      ex. : $(basename $0) *.txt"
  echo -e "                    Si non donné, renomme toutes les photos jpg et les vidéos\n\t\t\tmpg, avi, mov, mp4"
  echo
  echo -e "        \033[1mOptions particulières du tri par date (-d|--date) :\033[0m"
  echo -e "          \033[34m--check\033[0m : ne fait que tester si les photos sont bien triées"
  echo -e "          \033[34m--affiche\033[0m : affiche la date des photos"
  echo -e "          \033[34m--ajoutDate\033[0m : ajoute la date de la photo dans son nom sous la forme\n\t\t\"photo 45 (jj-mm-aaaa).jpg\""
  echo
  echo -e "        \033[1mAutres : gestion des commentaires et annulation :\033[0m"
  echo -e "          \033[34m-a|--addComment\033[0m : ajoute un commentaire         (option \033[34m--total\033[0m pour"
  echo -e "          \033[34m-s|--supComment\033[0m : supprime un commentaire       recherche approfondie)"
  echo -e "          \033[34m--undo\033[0m : annule la dernière opération de renommage"
 
  if [ -n "$1" ]; then
    echo -e "\n\033[7m$1\033[0m\n"
    exit 1
  fi
  exit
}

FIRST=1   #1 tant que aucun "move" n'a été fait ; 0 sinon
MOTIF="*.[jJmM][pP][gG] *.[aA][vV][iI] *.[mM][oO][vV] *.[mM][pP]4"  #liste des fichiers reconnus
move()
{
  [ $FIRST -eq 1 ] && FIRST=0 && rm $UNDO 2>/dev/null
 
  mv -i "$1" "$2$3" #-i ==> prévient si overwrite un fichier
  echo "$1" >> $UNDO
  echo "$2" >> $UNDO
}

############# FONCTION addComment #############
addComment()
{
  [ "$1" = "-s" ] && DELETE=1 && shift
  #RAPIDE=0 => test sur tous les fichiers ; RAPIDE=1 => test sur les photos à partir de $begin -> $end
  [ "$1" = "--total" ] && RAPIDE=0 && shift || RAPIDE=1

  #1er paramètre = begin
  #[2è paramètre = end] <= recopie de begin si non donné
  #3è paramètre  = comment
  if [ -n "$2" -a -n "$(echo $2 | sed s/[0-9]*//)" ] || [ -n "$1" -a -z "$2" ] ; then
    set $1 "$@"
  fi

  [ -z "$1" ] && read -p "Nombre de départ : " begin || begin="$1"
  [ -n "$(echo $begin | sed s/[0-9]*//)" -o -z "$begin" ] && echo "Nombre de départ non valide !" && exit 1

  [ -z "$2" ] && read -p "Nombre de fin    : " end || end="$2"
  [ -n "$(echo $end | sed s/[0-9]*//)" ] && echo "Nombre de fin non valide !" && exit 1
  [ -z "$end" ] && end=$begin && echo -e "\033[1ANombre de fin    : $end"

  [ "$begin" -gt "$end" ] && echo "Erreur : mauvaises entrées !" && exit 1

  if [ "$DELETE" = 1 ]; then
    espaceComment=""
  else
    espaceComment=" "
    [ -n "$3" ] && shift && shift && comment="$*" || read -p "Commentaire      : " comment
    [ -z "$comment" ] && echo "Erreur : commentaire vide !" && exit 1
  fi
  echo

  #supprime les 0 au début du chiffre (sinon "parfois" considéré comme octal : ex. dans ${..[$num]}, for ((n=$begin;n<$(($end+1));++n)) )
  begin=$(echo $begin|sed "s/^0*\(.\)/\1/")
  end=$(  echo $end  |sed "s/^0*\(.\)/\1/")

  [ $(ls $MOTIF 2>/dev/null |wc -l) -eq 0 ] && echo "Pas de fichiers jpg trouvé dans le répertoire courant !" && exit 1

  [ "$RAPIDE" = 1 ] && nBegin=$(ls $optionLS $MOTIF 2>/dev/null|grep " 0*$begin\(_[0-9]\+\)\?[ \.]" -n -m1|cut -d':' -f1) #n° du fichier $begin parmi toutes les photos
  [ -z "$nBegin" ] && nBegin=0
 
  liste=$(ls -d -- $MOTIF 2>/dev/null)  #pour avoir les fichiers triés par ordre alphabétique
  for i in 1 2 ; do
    n=0 #pour recherche rapide
    num=""
    IFS=$'\n' #pour les noms de fichier avec espace
    for file in $liste; do
      [ ! -f "$file" ] && continue  #ex. : file=*.[aA][vV][iI] si pas de fichier avi ou les dossiers (nommés xx.jpg)
      n=$(($n+1))
      [ "$RAPIDE" = 1 ] && [ $n -lt $nBegin ] && continue
      [ "$RAPIDE" = 1 ] && [ -n "$num" ] && [ $num -gt $end ] && break
     
      ext=${file##*.}
     
      #1) recherche de la photo sans comment
      #OU num=$(expr "$file" : ".* \([0-9]\+\)\.jpg|.* \([0-9]\+\)_[0-9]\+\?\.jpg") #renvoie ce qui matche dans () ; vide sinon
      num=$(expr "$file" : ".* 0*\([0-9]\+\)\\(_[0-9]\+\\)\?\.$ext")  #renvoie ce qui matche dans () ; vide sinon
      if [ -n "$num" ]; then
        if [ $begin -le $num ] && [ $num -le $end ]; then
          Tnocomment[$num]=$((${Tnocomment[$num]}+1))
          if [ ! "$DELETE" = 1 ]; then
            nom=${file%.*}  #retirer l'extension
            if [ $i -eq 1 ] ; then
              echo -e "$file\t ==> $nom \033[32m$comment\033[0m.$ext"
            else
              move "$file" "$nom $comment.$ext"
            fi
          fi
        fi
      else
        #2) sinon : recherche de la photo avec comment
        num=$(expr "$file" : ".* 0*\([0-9]\+\)\\(_[0-9]\+\\)\? .\+\.$ext")  #renvoie ce qui matche dans () ; vide sinon
        if [ -n "$num" ]; then
          if [ $begin -le $num ] && [ $num -le $end ]; then
            Twithcomment[$num]=$((${Twithcomment[$num]}+1))
            nom=$(expr "$file" : "\(.* [0-9]\+\|.* [0-9]\+_[0-9]\+\) ") #nom fichier sans comment
            if [ -z "$nom" ] ; then
              read -p "Erreur interne - fichier '$file' : commentaire pas trouvé. <ENTER>"
            else
              if [ $i -eq 1 ] ; then
                if [ ! "$file" = "$nom$espaceComment$comment.$ext" ] ; then
                  oldComment=$(expr substr "$file" $(expr length "$nom"+2) $(expr length "$file"))
                  oldComment=${oldComment%.*}   #supprime le suffixe
                  echo -e "$nom \033[31m$oldComment\033[0m.$ext\t==> $nom$espaceComment\033[32m$comment\033[0m.$ext"
                else
                  echo -e "\033[37m$file\t==> (inchangé)\033[0m"
                fi
              else
                if [ ! "$file" = "$nom$espaceComment$comment.$ext" ] ; then
                  move "$file" "$nom$espaceComment$comment.$ext"
                fi
              fi
            fi
          fi
        fi
      fi
    done

    if [ $i -eq 1 ] ; then
      nocomment=0
      withcomment=0
      [ ! "$DELETE" = 1 ] &&  for i in ${Tnocomment[@]};   do nocomment=$(($nocomment+$i));     done
      for i in ${Twithcomment[@]}; do withcomment=$(($withcomment+$i)); done

      [ "$DELETE" = 1 -a $withcomment -eq 0 ] && echo "Pas de photos avec commentaire trouvées entre $begin et $end !" && exit
      [ $nocomment -eq 0 -a $withcomment -eq 0 ] && echo "Pas de photos trouvées entre $begin et $end !" && exit

      echo -en "\033[31m"
      for ((n=$begin;n<$(($end+1));++n)); do
        l=$((${Tnocomment[$n]}+${Twithcomment[$n]}+0))
        if  [ $l -eq 0 ]; then
          [ -z "$beg" ] && echo -en "\nAttention :\t" || echo -en "\n\t\t"
          beg=1
          echo -en "aucune photo ne porte le numéro \033[1m$n\033[0;31m"
        elif  [ $l -ne 1 ]; then
          [ -z "$beg" ] && echo -en "\nAttention :\t" || echo -en "\n\t\t"
          beg=1
          echo -en "$l photos portent le numéro \033[1m$n\033[0;31m"
        fi
      done
      echo -en "\033[0m"

      [ $nocomment -ne 0 ]   && echo -en "\n > $nocomment commentaires à ajouter."
      [ $withcomment -ne 0 ] && echo -en "\n > $withcomment commentaires à modifier."
      read -p " Vous confirmez [O/n] ? " res
      if [ "$res" == "n" ] || [ "$res" == 'N' ]; then
        break
      fi
    fi
  done
}

############# FONCTION undo #############
UNDO=~/.renomme.undo
undo()
{
  [ ! -f $UNDO ] && echo "Pas de undo possible." && exit
  fichTest=$(tail $UNDO -n 1)
  [ ! -f "$fichTest" ] && echo "Undo impossible : le fichier '$fichTest' n'existe pas." && exit
 
  N=$(wc -l $UNDO | cut -f1 -d' ')
  for ((n=$(($N/2));n>0;--n)); do
    ligne_old=$(($n*2-1))
    ligne_new=$(($n*2))
    old_name=$(head -$ligne_old $UNDO|tail -1)
    new_name=$(head -$ligne_new $UNDO|tail -1)
    echo -e "$new_name\t==>\t$old_name"
    mv -i "$new_name" "$old_name"
  done

  rm $UNDO
  exit
}

############# TRAITEMENT DES OPTIONS #############
#valeurs par défaut :
optionLS="-d --"
  # -d => ls ne liste pas le contenu des dossiers
  # -- => fin des options
espace=" "
espaceComment=" "
index=1
PREVIEW=1
CASE_EXT=""

while [ -n "$1" ]; do
  case "$1" in
    --chronologique|-c)
      CHRONO=1
      optionLS="-tr $optionLS";;  #ls -tr : tri par date (-t) croissant(-r)
    --date|-d)
      DATE=1;;
    --nospace|-n)
      espace=""
      espaceComment="_";;
    --index|-i)
      index=$2
      [ -n "$(echo $index | sed s/[0-9]*//)" -o -z "$index" ] && usage "L'option \"$1\" doit être suivie d'un entier."
      shift;;
    --min|--maj)
      if [ -z "$CASE_EXT" ]; then
        [ "$1" = "--min" ] && CASE_EXT="min" || CASE_EXT="maj"
      else
        usage "Les options --min et --maj sont incompatibles entre elles !"
      fi;;
    --titre)
      KEEP_TITRE=1;;
    --comment)
      KEEP_COMMENT=1;;
    --renum|-r)
      KEEP_COMMENT=1
      KEEP_TITRE=1;;
    --exclude|-e)
      [ -z "$2" ] && usage "L'option \"$1\" doit être suivie d'un fichier à exclure."
      excl=("${excl[@]}" "$2")
      shift;;
    --exclude-motif|-em)
      [ -z "$2" ] && usage "L'option \"$1\" doit être suivie d'un motif à exclure."
      excl=("${excl[@]}" ".*$2.*")
      shift;;
    --diapo)
      DIAPO=1;;
    --dHP)
      DHP=1;;
    --dCANON)
      DCANON=1;;
    --noconfirm|-y)
      PREVIEW="";;
    --check)
      CHECK=1;;
    --affiche)
      AFFICHE=1;;
    --ajoutDate)
      AJOUTDATE=1;;
    --addComment|-a)
      shift && addComment "$@"
      exit;;
    --supComment|-s)
      shift && addComment -s "$@"
      exit;;
    --undo)
      undo;;
    --help|-h)
      usage;;
    *)
      #fin des options :
      #éventuellement dossier donné
      #puis : nom des photos (avec option --date)  OU  liste de fichiers
      if [ -d "$1" ]; then
        echo "Changement de dossier : $1"
        cd "$1"
        shift
        [ -n "$1" ] && nomPhotos="$1"
      else
        nomPhotos="$1"
      fi
      [ "$DATE" = 1 ] && shift && [ -n "$1"  ] && usage "L'option \"$*\" n'est pas attendue ici !"
      break;;
  esac
  shift
done
if [ "$DATE" = "1" ] && [ "$CHRONO" = "1" ] ; then
  usage "L'option --date|-d n'est pas compatible avec l'option --chronologique|-c !"
fi
if [ "$CHECK" = "1" -o "$AFFICHE" = "1" -o "$AJOUTDATE" = "1" ] && [ "$DATE" != "1" ] ; then
  usage "Les options --check, --affiche et --ajoutDate ne sont valables qu'avec l'option --date|-d!"
fi

############# FONCTIONS POUR TRIER LES PHOTOS PAR DATE #############
quit()
{
  rm $fichDate $fichSort $fichDif 2>/dev/null
  exit 0
}

# écrit la date des fichiers concernés dans un fichier
readDate()
{
  ######################
  ###  LECTURE DATE  ###
  ######################
  fichDate=/tmp/date.renomme.tmp  #date des photos + nom fichier
  fichSort=/tmp/dateSort.tmp  #idem, trié
  fichDif=/tmp/dateDif.tmp  #différences entre fichiers fichDate/Sort
  rm $fichDate 2>/dev/null ; touch $fichDate  #au cas où...

  motifJPG="[jJ][pP][gG]"
  nErr=0  #+1 à chaque photo dont on ne trouve pas de date valide
  nombre=$(ls |grep "$nomPhotos.*\.$motifJPG$" -c)
  n=0 #pour l'affichage

  if [ -z "$nombre" ] || [ $nombre -eq 0 ]; then
    echo "Pas de photos."
    quit
  fi

  # test de la présence de jhead
  JHEAD=1
  which jhead >/dev/null 2>&1
  if [ $? -eq 1 ]; then
    echo -en "\033[1m   'jhead' n'est pas installé sur votre système. Installez-le si vous voulez\n   améliorer la vitesse de détection de la date.\n\n\033[0m"
    JHEAD=0
  fi

  for file in *"$nomPhotos"*.$motifJPG ; do
    n=$(($n+1))
    echo -en "[$n/$nombre] détection de la date de '$file'... "
    #date="$(identify -format %[EXIF:DateTimeOriginal] "$file")"
    if [ $JHEAD -eq 0 ]; then
      date="$(exiftool -"DateTimeOriginal" -s -s -s "$file")"
    else
      #date="$(jhead "$file" | grep Date/Time | grep [0-9].* -o)"
      #date="$(jhead "$file" | grep Date/Time | awk '{ print $3 " " $4}')"
      #date="$(jhead "$file" | grep Date/Time | cut -d' ' -f6-)"
      date="$(jhead "$file" | awk '$1=="Date/Time" {print $3 " " $4 }')"  # plus rapide
    fi
    echo -en "\r\033[K" #retour en début de ligne + efface la ligne
    if [ -z "$date" ] ; then #-z : vide
      echo "Pas trouvé la date de la photo '$file'"
      nErr=$(($nErr+1))
    elif [ $(expr length "$date") -ne 19 ] ; then
      echo "Format de la date de la photo '$file' non valide"
      nErr=$(($nErr+1))
    else
      echo "$date>>>>$file" >> $fichDate
      if [ "$AFFICHE" == 1 ] ; then
        echo "$date : [$n/$nombre] $file"
      fi
    fi
  done
 
  # Exclusion des fichiers
  for f in "${excl[@]}" ; do
    sed -i "/^.\{19\}>>>>$f$/d" $fichDate
  done

  nombre=$(grep "" $fichDate -c)
  if [ $nombre -eq 0 ] ; then
    echo "Plus de photos valides !"
    quit
  fi

  if [ $nErr -gt 0 ] ; then
    echo
    echo -e "\033[31mAttention, $nErr/$(($nErr+$nombre)) photos non prises en compte !\033[0m"
  fi
}

#vérif si pas de fichier diaporama
verifDiapo()
{
  #photos diaporama d'appareil photos HP : type 'hrxx0123.jpg'
  if [ -z "$DHP" ] && [ -n "$(echo "$liste" | grep "hr..[0-9]\{4\}\.jpg$" -i)" ]; then
    echo -en "Il semble qu'il y ait des photos de diaporama d'appareil HP (genre\n'hrxx0123.jpg') à renommer. Voulez-vous activez l'option '--dHP' [O/n] ? "
    read res
    if [ ! "$res" == "n" ] && [ ! "$res" == 'N' ]; then
      DHP=1
    fi
    echo
  fi
  #photos diaporama d'appareil photos CANON : type 'st[abc..]_0123.jpg'
  if [ -z "$DCANON" ] && [ -n "$(echo "$liste" | grep "st[a-z]_[0-9]\{4\}\.jpg$" -i)" ]; then
    echo -en "Il semble qu'il y ait des photos de diaporama d'appareil CANON (genre\n'sta_0123.jpg') à renommer. Voulez-vous activez l'option '--dCANON' [O/n] ? "
    read res
    if [ ! "$res" == "n" ] && [ ! "$res" == 'N' ]; then
      DCANON=1
    fi
    echo
  fi
 
  #photos diaporama déjà traitées : type 'photo 45_2.jpg'
  if [ -z "$DIAPO" ] && [ -n "$(echo "$liste" | grep ".* [0-9]\+_[0-9]\+[ \.]")" ]; then
    echo -en "Il semble qu'il y ait des photos de diaporama (genre 'photo 45\033[1;7m_2\033[0m.jpg') à\nrenommer. Voulez-vous activez l'option '--diapo' [O/n] ? "
    read res
    if [ ! "$res" == "n" ] && [ ! "$res" == 'N' ]; then
      DIAPO=1
    fi
    echo
  fi
}

#vérif si pas de photos NIKON de la forme FSCNxxxx.JPG et RSCNxxxx.JPG (=photos retouchées sur l'appareil)
verifNIKON()
{
  #vérification de la présence de photos NIKON
  #rappel : $liste peut contenir la date des photos (càd pas ajouter '^' à "grep "^...JPG$")
  if [ -n "$(echo "$liste" | grep "[FR]SCN[0-9]\{4\}\.JPG$" -i)" ]; then
    echo -en "Il semble qu'il y ait des photos retouchées avec un appareil NIKON (genre\n'\033[1;7mF\033[0mSCN0123.JPG' ou '\033[1;7mR\033[0mSCN0123.JPG') à renommer. Voulez-vous en tenir compte ?\nCela rajoutera un commentaire dans le nom de la photo [O/n] ? "
    read res
    if [ ! "$res" == "n" ] && [ ! "$res" == 'N' ]; then
      NIKON_FR=1
    fi
   
    if [ ! "$CHRONO" = "1" ] && [ ! "$DATE" = "1" ]; then
      echo -en "Attention, vous avez choisi un tri alphabétique. Ces photos ne seront pas triées\npar date. Voulez-vous opter pour un tri chronologique [O/n] ? "
      read res
      if [ ! "$res" == "n" ] && [ ! "$res" == 'N' ]; then
        CHRONO=1
        optionLS="-tr $optionLS"
      fi
    fi
    echo
  fi
}


############# TYPE ET NOMBRE DE FICHIERS #############
if [ "$DATE" = "1" ]; then  #tri de photos par date
  readDate

  #############
  ###  TRI  ###
  #############
  sort $fichDate > $fichSort
  diff $fichDate $fichSort > $fichDif
  #diff renvoie 0 si les mêmes fichiers, 1 si qq différences ou 2 sinon
  if [ $? -eq 0 ] ; then
    echo -e "\033[32mLes $nombre photos sont bien triées par date.\033[0m"
    [ "$CHECK" == 1 ] && quit
    read -p "Voulez-vous quand même les renommer [o/N] ? " res
    if [ ! "$res" == "o" ] && [ ! "$res" == 'O' ]; then
      quit
    fi
  else
    echo -e "\033[31mLes $nombre photos ne sont pas triées par date ($(grep -c  "^> " $fichDif) différences).\033[0m"
    [ "$CHECK" == 1 ] && quit
  fi

  #fichSort contient la liste des fichiers triés par date
  #si AJOUTDATE => contient aussi la date
  [ "$AJOUTDATE" != "1" ] && sed -i "s/.*>>>>//" $fichSort

  type="photos"
  liste="$(more $fichSort)"
 
  verifDiapo
  verifNIKON
else
  if [ $# -eq 0 ] ; then  #Photos uniquement
    type="photos" #par défaut : photos et vidéos
    liste="$(ls $optionLS $MOTIF 2>/dev/null)"
  else
    type="fichiers"
    liste="$(ls $optionLS "$@" 2>/dev/null)"
   
    #Vérif si tous les fichiers existent
    for file in "$@" ; do
      if [ ! -f "$file" ] && [ ! -d "$file" ] ; then
        echo -e "Ce fichier n'existe pas : \033[31m$file\033[0m"
      fi
    done
  fi

  # Exclusion des fichiers
  for f in "${excl[@]}" ; do
    liste="$(echo "$liste"|sed "/^$f$/d")"
  done
 
  # Nombre de fichiers :
  nombre=$(echo "$liste" | wc -l) # ! vaut 1 aussi si la liste est vide
  if [ -z "$liste" ] ; then
    echo "Aucun fichier trouvé."
    exit
  fi
   
  #photos NIKON. Si tri par ordre alphabétique, éventuellement retrier par ordre chronologique
  orig_CHRONO=$CHRONO
  verifNIKON
  if [ "$CHRONO" = "1" ] && [ ! "$orig_CHRONO" = "$CHRONO" ] ; then
    # avec IFS=$'\n' -> ne pas mettre d'espace en trop dans les options de ls
    liste=$(optionLSlist=($optionLS) ; IFS=$'\n' ; ls ${optionLSlist[@]} $liste)
  fi
 
  #diaporama HP / CANON. Si tri par ordre alphabétique, mettre les fichiers de diaporama au bon endroit
  verifDiapo
  if [ ! "$CHRONO" = "1" ] ; then
    if [ "$DHP" = "1" ]; then
      liste="$(echo "$liste"|sed "s/^\([hH][rR][a-zA-Z0-9]\{2\}_\([0-9]\{4\}\)\.[jJ][pP][gG]\)$/hpim\2.jpg\t\1/"  \
                |sort \
                |sed "s/^hpim[0-9]\{4\}.jpg\t\([hH][rR][a-zA-Z0-9]\{2\}_[0-9]\{4\}\.[jJ][pP][gG]\)$/\1/")"
    fi
    if [ "$DCANON" = "1" ]; then
      liste="$(echo "$liste"|sed "s/^\([sS][tT][a-zA-Z]_\([0-9]\{4\}\)\.[jJ][pP][gG]\)$/img_\2.jpg\t\1/"  \
                |sort \
                |sed "s/^img_[0-9]\{4\}.jpg\t\([sS][tT][a-zA-Z]_[0-9]\{4\}\.[jJ][pP][gG]\)$/\1/")"
    fi
  fi

  echo -en "\033[1m$nombre $type\033[0m à renommer suivant \033[1m"
  [ "$CHRONO" = "1" ] && echo -en "la date des fichiers" || echo -en "l'ordre alphabétique"
  echo -e "\033[0m."
fi

# Nom (titre) des fichiers :
if [ "$KEEP_TITRE" != "1" ]; then
  titre=$(echo "$liste" | head -1 | sed "s/.*>>>>//") #1ère ligne
  titre=${titre%% [0-9]*} #supprime le plus grand suffixe
  read -p "> Nom des $type ['$titre' par défaut <enter>] : " res
  [ "$res" != "" ] && titre=$res
fi

#en cas de photos, par défaut mettre l'extension en minuscules
[ $type = "photos" ] && [ -z "$CASE_EXT" ] && CASE_EXT="min"

n_digit=$(expr length $((nombre+10#$index-1)))  #nombre de digits (dans nom fichier)
[ $(expr length $index) -gt $n_digit ] && n_digit=$(expr length $index)   #nombre de digits = au minimum celui donné par -i|--index
index=$(echo $((10#$index)))      #conversion en décimal
n_digitAffich=$(expr length $nombre)    #nombre de digits (pour affichage)

############# RENOMMAGE #############
for i in 1 2 ; do
  n=$((index-1))  #n° fichier
  nAffich=0   #n° pour affichage uniquement

  IFS=$'\n'
  for file in $liste
  do
    if [ "$AJOUTDATE" == "1" ]; then
      date=$(echo "$file"|sed "s/\([0-9]*\):\([0-9]*\):\([0-9]*\).*/\3-\2-\1/")
      addDate="$espaceComment($date)"
      file=$(echo "$file"|sed "s/.*>>>>//")
    fi

    if [ ! -f "$file" ] && [ ! "$DATE" = "1" ] ; then
      continue  #ex. : dossier
    fi

    #extension
    ext=${file##*.}
    if [ "$ext" = "$file" ] ; then  #pas d'extension
      ext=""
    else
      ext=".$ext"
    fi
    if [ "$CASE_EXT" = "min"  ] ; then
      ext=`echo $ext | tr A-Z a-z` #extension du fichier en minuscules
    elif [ "$CASE_EXT" = "maj"  ] ; then
      ext=`echo $ext | tr a-z A-Z` #extension du fichier en majuscules
    fi

    comFile=""
   
    #traitement du titre
    #conservation du nom (titre) de la photo
    #lorsque le nom est du type 'noël 012 Farnières.jpg' ==> 'noël'
    if [ "$KEEP_TITRE" = 1 ] ; then
      titre=${file%% [0-9]*}  #supprime le plus grand suffixe
      [ "$titre" = "$file" ] && titre=${file%.*}  #on supprime juste l'extension
    fi
    #fin traitement du titre


    #traitement des commentaires
    #conservation d'un éventuel commentaire dans le nom de la photo
    #lorsque le nom est du type 'noël 012 Farnières.jpg' ==> 'Farnières'
      #OLD : comFile=${file#* [0-9]* }  #supprime le préfixe (va pas bien si chiffre avant)
      #OLD : if [ "$comFile" == "$file" ] ; then  #y'a pas de commentaires
    if [ "$KEEP_COMMENT" = 1 ] ; then
      if [ "$DIAPO" = 1 ] ; then
        index_com=$(expr "$file" : ".* [0-9]\+ \|.* [0-9]\+_[0-9]\+ ")
      else
        index_com=$(expr "$file" : ".* [0-9]\+ ")
        #index_com=$(expr "$file" : ".* [0-9]\+ .")
        #rem : attention, certains caractères (ÉÈ...) comptent pour 2
      fi
      if [ $index_com -ne 0 ] ; then
        comFile=$(expr substr "$file" $((index_com+1)) $(expr length "$file"))
        comFile=${comFile%$ext}   #supprime le suffixe
      fi
    fi
    #fin traitement des commentaires


    #traitement des photos NIKON
    #ajout d'un éventuel commentaire
    if [ "$NIKON_FR" = 1 ] ; then
      FR=$(expr "$file" : "^\([FfRr]\)[Ss][Cc][Nn][0-9]\{4\}\.[jJ][pP][gG]$" | tr A-Z a-z )
      if [ "$FR" = "f" ] ; then
        comFile="(retouché par NIKON)"
      elif [ "$FR" = "r" ] ; then
        comFile="(zoom par NIKON)"
      fi
    fi
    #fin traitement des photos NIKON
   
   
    #traitement des diaporamas
    #ajout d'un éventuel suffixe au n° de la photo (ex. : '_05' dans 'photo 012_05 comment.jpg')
    ajout=""
    #1) diaporama CANON : fichier type 'st[abc..]_0123.jpg'
    if [ "$DCANON" = "1" ]; then
      seq=$(expr "$file" : "^[sS][tT]\([a-zA-Z]\)_[0-9]\{4\}\.[jJ][pP][gG]$") #renvoie ce qui matche dans () ; vide sinon
      if [ -n "$seq" ] ; then
        seq=$(echo $seq|tr A-Z a-z) #en minuscule
        numDiap=$((  $(printf "%d" \'$seq)  -  $(printf "%d" \'a)  +  1  )) #a=>1 ; b=>2 ; ...
       
        numDiap=$(printf %02d $numDiap) #1 => 01 ; 2 => 02 ; ...
        ajout="_$numDiap"
        if [ $numDiap -ne 1 ]; then n=$((n-1)); fi
      fi
    fi
   
    #2) diaporama HP : fichier type 'hrxx0123.jpg'
    if [ "$DHP" = "1" ]; then
      seq=$(expr "$file" : "^[hH][rR][a-zA-Z0-9]\([a-zA-Z0-9]\)_[0-9]\{4\}\.[jJ][pP][gG]$") #renvoie ce qui matche dans () ; vide sinon
      if [ -n "$seq" ] ; then
        [ -z "$oldSeq" ] && oldSeq=0
        if [ $seq -eq $oldSeq ]; then
          numDiapHP=$(($numDiapHP+1))
        else
          numDiapHP=1
        fi
        oldSeq=$seq
       
        numDiapHP=$(printf %02d $numDiapHP) #1 => 01 ; 2 => 02 ; ...
        ajout="_$numDiapHP"
        if [ $numDiapHP -ne 1 ]; then n=$((n-1)); fi
      fi
    fi
   
    #3) diaporama déjà traitées : fichier type 'photo 45_2.jpg'
    if [ "$DIAPO" = 1 ] ; then
      numDiap=$(expr "$file" : ".* [0-9]\+_\([0-9]\+\)[ \.]") #renvoie ce qui matche dans () ; vide sinon
      if [ -n "$numDiap" ]; then
        ajout="_$numDiap"
        if [ $numDiap -ne 1 ]; then n=$((n-1)); fi
      fi
    fi
    #fin traitement des diaporamas


    n=$(($n+1))
    nAffich=$(($nAffich+1))
    n0=$(printf %.${n_digit}d $n)     #$n précédé de 0
    nAffich0=$(printf %.${n_digitAffich}d $nAffich) #$nAffich précédé de 0
   
    [ -n "$comFile" ] && comFile="$espaceComment$comFile"
    nom="${titre}${espace}${n0}${ajout}$addDate$comFile${ext}"
    nomAffich="${titre}${espace}\033[1m${n0}${ajout}\033[0;32m$addDate$comFile\033[0m${ext}"

    echo -en "\r\033[K"
    if [ ! "$file" = "$nom" ] ; then
      echo -en "[$nAffich0/$nombre]  $file\t==>\t$nomAffich "
      if [ -z "$PREVIEW" ] || [ $i -eq 2 ]; then
        addTMP=".TMPTMP"  #pour ne pas donner le nom d'une photo qui existerait déjà
        move "$file" "$nom" "$addTMP"
      fi
    else
      echo -en "[$nAffich0/$nombre]  \033[37m$file\t==>\t(inchangé)\033[0m"
    fi
    [ $i -eq 1 ] && echo
  done

  [ -z "$PREVIEW" ] && break
  if [ $i -eq 1 ]; then
    echo
    read -p "Vous confirmez [O/n] ? " res
    if [ "$res" == "n" ] || [ "$res" == 'N' ]; then
      quit
    fi
  else
    echo -en "\r\033[K"
  fi
done

[ -z "$(ls | grep "\.TMPTMP$")" ] && quit #cas où aucune photo renommée

echo -en "Finalisation du renommage...  "
for fileTMP in *.TMPTMP; do
  file="${fileTMP%.*}"
  [ -f "$file" ] && echo "Conflit de nommage : le fichier '$file' existe déjà."
  mv -i "$fileTMP" "$file"
done
echo -en "\r\033[K"
quit
 



Tu peux le coller dans ton dossier et double-cliquer dessus " lancer dans terminal "


38 photos à renommer suivant l'ordre alphabétique.
> Nom des photos ['Le' par défaut <enter>] : NOUVEAU_NOM
 

Dernière modification par Anonyme (13-01-2016 21:36:06)

#3 13-01-2016 21:38:44

Haricophile
Adhérent(e)
Lieu : Pignans (Var)
Distrib. : SID
Noyau : 4.0.0-1-amd64
(G)UI : Mate / i3 selon...
Inscription : 14-09-2009

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Pour les images, exiv2 permet pas mal de choses.

« Un optimiste n’est pas un être satisfait, content de la situation actuelle. C’est quelqu’un qui pense qu’il peut faire quelque chose qui servira. » (Raymond Aubrac)

Hors ligne

#4 13-01-2016 22:08:15

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Ouch ! un script (va me falloir quelques mois avant de bien comprendre comment ça marche et comment je le met en œuvre) et un programme en ligne de commande, voilà que mon petit neurone se remet à chauffer lol
Merci quand même, si y'a pas d'autres solutions faudra que j'en passe par là mais ... y' a vraiment pas plus simple ?:rolleyes:

Hors ligne

#5 13-01-2016 22:09:22

sogal
Black Metal Modo
Lieu : Nord Isère
Distrib. : openSUSE Leap 42.3
Noyau : Linux 4.4.76
(G)UI : GNOME
Inscription : 09-05-2013
Site Web

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Salut,
J'avais trouvé et traduit en français un script Python qui offre une interface graphique et des options avancées de renommage par motif, un peu à la Pyrenamer.

J'ai copié le code ici : https://debian-facile.org/paste-470C666B88

Il te suffit de le recopier dans un fichier que tu placeras dans $HOME/.local/share/nautilus/scripts (crée le dossier au besoin) et rendras exécutable.
Le script sera dispo par clic-droit dans le menu contextuel de Nautilus, dans un sous-menu appelé "scripts".

1485418338.png Hello IT ! Have you tried turning it off and on again ?

Hors ligne

#6 13-01-2016 22:21:45

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Sogal, ton script me plaît bien mieux smile
Je teste ça et je fais un retour ensuite. cool

Hors ligne

#7 13-01-2016 22:35:05

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

pyrenamer est packagé pour debian, il faut le signaler.

J'ai fait une petite recherche et j'ai trouvé aussi :

  • gprename : écrit en gtk/perl, avec interface graphique donc.

  • mrename : lot de shells script.


Que je n'ai jamais essayé…

Sans compter les programmes rename et mmv mais
qui sont d'une utilisation plus difficile pour un novice car
ils s'utilise en ligne de commande et demande quelques connaissances
en expression rationnelle ou motif du shell.

Dernière modification par enicar (13-01-2016 22:35:48)

Hors ligne

#8 13-01-2016 22:41:30

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Et aussi un qui n'est pas dans debian metamorphose

Hors ligne

#9 13-01-2016 23:50:58

Patriboom
Membre
Lieu : Arctique canadien
Distrib. : Bookworm (12)
Noyau : Linux 6.1.0-13-amd64
(G)UI : MATE
Inscription : 25-12-2008
Site Web

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Thunar a ça en équipement de série..

Portez la paix
Patrick Allaire, ptre

Hors ligne

#10 14-01-2016 09:25:44

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Hop, les nouvelles :
J'ai mis en place le script proposé par Sogal, rendu exécutable et j'ai maintenant un choix ->Script -> renomenlot (nom que j'ai donné au script).

Après avoir sélectionné plusieurs photos, clic droit -> script -> renomenlot :  mon curseur se change en croix.
La seule chose que je peux faire ensuite c'est cliquer avec cette croix, ce qui me génère plein de fichiers post script appelés time, sys, string, roman, os, .... y s'arrête plus lol ça m'a l'air de correspondre au début du script mais python est un langage que je ne connais pas (enfin pas encore ...).
Visuellement ces fichiers ressemblent à des captures d'écran.

Mais je ne vois pas comment renommer mes photos roll il va falloir que je rajoute les scripts pour Debian à ma listes de choses à apprendre parce que ça pique ma curiosité.
Mais ce sera pour plus tard, j'ai encore des basiques à intégrer et je vais finir par saturer si je veux tout faire à la fois smile

En attendant je vais essayer Thunar, merci Patriboom. Tout d'un coup ça me rassure qu'un gestionnaire de fichiers ait cette fonction toute bête de série.

@ Enicar, j'avais trouvé grepname et mrename dans les paquets mais ça me semble une usine à gaz pour mon petit besoin tout simple. Pareil pour Pyrenamer, du coup je l'ai essayé.

Hors ligne

#11 14-01-2016 09:52:03

Anonyme
Invité

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Et mon script va pas ? Il est si simple d'utilisation pourtant smile

Tu  le met  dans ton dossier où se trouve les photos et tu double-clique dessus " lancer dans terminal " et tu mets un nom dans le terminal

Exemple : Vacances
Ce qui te sortira:

Vacances-001
etc

Le script exécutable :

http://sd-1.archive-host.com/membres/up … Renome.zip

Dernière modification par Anonyme (14-01-2016 09:52:48)

#12 14-01-2016 10:09:50

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Mercredi a écrit :

@ Enicar, j'avais trouvé grepname et mrename dans les paquets mais ça me semble une usine à gaz pour mon petit besoin tout simple. Pareil pour Pyrenamer, du coup je l'ai essayé.


Renommer des fichiers de manière automatique n'est jamais une chose simple wink

Hors ligne

#13 14-01-2016 10:51:06

phlinux
Membre
Distrib. : Buster
Noyau : 5.10
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-05-2009

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

[attention troll] Rox est très évolué sur le sujet

Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#14 14-01-2016 10:53:59

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

phlinux a écrit :

[attention troll] Rox est très évolué sur le sujet


euh, il roxe, c'est ça ? big_smile

Hors ligne

#15 14-01-2016 11:11:34

phlinux
Membre
Distrib. : Buster
Noyau : 5.10
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-05-2009

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

je fais un peu de pub car le suivi n'est pas très actif, et un jour > plouf

Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#16 14-01-2016 11:36:43

deuchdeb
Moderato ma non troppo
Distrib. : Debian11-KDE-Plasma, LinuxMintCinnamon, DFLinux11
Noyau : Noyau stable
(G)UI : KDE Plasma 5.20
Inscription : 13-01-2010
Site Web

Re : [Résolu] Renommer des fichiers en lot dans Nautilus


Une fleur, c'est magique non? smile
Association Debian Facile

Hors ligne

#17 14-01-2016 12:54:23

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

@ Golgot atta, j'essaye et je te redis

@Phlinux, j'ai regardé vite fait, d'après les captures d'écran, c'est un bureau "classique", j'aime bien le côté différent de Gnome, il est très intuitif à utiliser une fois qu'on s'y est fait. Bon après il a quelques petits défaut aussi, la perfection est un mythe smile

@deuchdeb, vais aller voir ça de plus près aussi.

Ce qui est bien avec le libre, c'est qu'il y a du choix, même si parfois c'est moins simple que quand y'en a pas lol

Hors ligne

#18 14-01-2016 13:15:59

nono47
Invité

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Salut,

Oui mais faut pas installer thunar sur un gnome, ça fait doublon avec nautilus et usine à gaz ! big_smile

#19 14-01-2016 13:25:56

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

nono47 a écrit :

Salut,

Oui mais faut pas installer thunar sur un gnome, ça fait doublon avec nautilus et usine à gaz ! big_smile


Marche pas très bien en effet lol nautilus ne se laisse pas faire

Tests suivants ...

Hors ligne

#20 14-01-2016 13:40:00

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Golgot, il est top ton script smile smile smile smile cool
Faut que lui fasse une petite tatouille pour avoir pil poil ce que je veux mais il fonctionne du tonnerre : clic droit -> script -> renome = Magie.

Hier soir je n'avais pas compris le fonctionnement et je pensais que j'aurais besoin d'ouvrir le terminal pour relancer le script à chaque fois que je veux renommer des photos.
Je me coucherais moins bête ce soir.

Hors ligne

#21 14-01-2016 13:42:08

Anonyme
Invité

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Ben voilà wink

#22 14-01-2016 18:29:48

sogal
Black Metal Modo
Lieu : Nord Isère
Distrib. : openSUSE Leap 42.3
Noyau : Linux 4.4.76
(G)UI : GNOME
Inscription : 09-05-2013
Site Web

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Mercredi a écrit :

J'ai mis en place le script proposé par Sogal, rendu exécutable et j'ai maintenant un choix ->Script -> renomenlot (nom que j'ai donné au script).

Après avoir sélectionné plusieurs photos, clic droit -> script -> renomenlot :  mon curseur se change en croix.
La seule chose que je peux faire ensuite c'est cliquer avec cette croix, ce qui me génère plein de fichiers post script appelés time, sys, string, roman, os, ..



Bizarre ça... doit te manquer une dépendance python quelque part, je regarderai ça.


1485418338.png Hello IT ! Have you tried turning it off and on again ?

Hors ligne

#23 14-01-2016 19:12:50

nounours
Adhérent(e)
Lieu : hourtin 33
Distrib. : Bookworm
Noyau : debian-facile-12.1_amd64.iso
(G)UI : ??
Inscription : 11-02-2012

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Patriboom a écrit :

Thunar a ça en équipement de série..



Et c'est simple.


N'achetez pas Windows !. Volez-le !. Au moins vous en aurez pour votre argent.

Hors ligne

#24 14-01-2016 21:40:23

Mercredi
Membre
Distrib. : Testing/Sid
Noyau : 5.2
(G)UI : Gnome-shell
Inscription : 25-09-2015

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

sogal a écrit :

Bizarre ça... doit te manquer une dépendance python quelque part, je regarderai ça.



Non en fait l'erreur venait du format de fichier : avec Geany l’extension n'est pas proposée automatiquement (enfin doit y avoir un truc mais je n'ai pas encore cherché) et je l'ai carrément zappée. Je l'ai compris tout à l'heure en lisant le wiki sur les scripts en bash, à un moment il est fait mention d'un script en python et quand j'ai vu l’extension ça a fait tilt.
Du coup enregistré correctement il fonctionne très bien smile

J'ai aussi trouvé ce script tout à l'heure : http://www.saintcarre.fr/saintcarre/con … s-fichiers
C'est celui qui a le résultat le plus proche de ce que veux.

Bon avec tout ça voilà que j'ai 3 scripts pour le prix d'un, avec chacun leurs spécificités. smile

Niveau code, python me semble plus accessible (la syntaxe me parait proche des langages "web"), je crois que je vais me laisser tenter à aller voir ça de plus près.

nounours a écrit :

Patriboom a écrit :

Thunar a ça en équipement de série..



Et c'est simple.


Ca je n'en doute pas mais il ne veut pas fonctionner à côté de Nautilus et je tiens à Gnome.

Hors ligne

#25 15-01-2016 00:39:55

Patriboom
Membre
Lieu : Arctique canadien
Distrib. : Bookworm (12)
Noyau : Linux 6.1.0-13-amd64
(G)UI : MATE
Inscription : 25-12-2008
Site Web

Re : [Résolu] Renommer des fichiers en lot dans Nautilus

Tiens, Mercredi, peut-être aimeras-tu aussi protéger tes droits d'auteurs sur les photos.
Oui, les fichiers jpg portent un genre de meta tag que tu peux changer.
Quand j'arrive avec une série d'images, je passe le petit script suivant pour que ce soit mon nom qu'on trouve dans ces meta.

#!/bin/sh

if [ ! $1 ]
then
echo ""
echo ""
echo "Bonjour et bienvenue dans le module de protection des photos."
echo "Les images seront attribuées à MonPrenom MonNom."
echo "Quel est le contexte de photographie (site, etc) ? "
echo "Pour que ceci fonctionne, vous devez indiquer le texte à inscrire comme un argument de la commande."
else
    echo ""
    echo ""
    echo "Nous commençons ici le travaille demandé."
    echo ""
    echo ""
    exiv2 -M"set Exif.Photo.UserComment charset=Ascii $1 $2 $3 $4 $5 $6 $7 $8" *.JPG
    exiv2 -M"set Exif.Image.ImageDescription Ascii $1 $2 $3 $4 $5 $6 $7 $8" *.JPG
    exiv2 -M"set Exif.Image.Copyright MonPrenom MonNom  http://www.cartefoi.net" *.JPG
    exiv2 -M"set Exif.Image.Artist MonPrenom MonNom, ptre" *.JPG
    exiv2 -M"set Exif.Image.XPTitle Ascii $1 $2 $3 $4 $5 $6 $7 $8" *.JPG
    exiv2 -M"set Exif.Image.XPComment Ascii $1 $2 $3 $4 $5 $6 $7 $8" *.JPG
    exiv2 -M"set Exif.Image.XPSubject Ascii $1 $2 $3 $4 $5 $6 $7 $8" *.JPG
    echo "Fin des opérations."
    echo "'$1 $2 $3 $4 $5 $5 $6 $7 $8' a été inscrit à toutes les images."
    echo ""
    echo ""
fi
 


Portez la paix
Patrick Allaire, ptre

Hors ligne

Pied de page des forums