Modifier l'extension des fichiers d'un dossier
Résolu
xunil2003
Messages postés
766
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Existe-t-il une solution pour récupérer les noms de fichiers d"un dossier sans l'extension. Je cherche à supprimer l'extension d'une liste de fichier puis a redonner une nouvelle extension au fichier.
Comment puis je faire ??
Mes images
Merci
Existe-t-il une solution pour récupérer les noms de fichiers d"un dossier sans l'extension. Je cherche à supprimer l'extension d'une liste de fichier puis a redonner une nouvelle extension au fichier.
Comment puis je faire ??
source="/home/laurent/Images/diapos/2/"
destination="/home/laurent/Images/diapos/2/3/"
fichier_destination=DSC00
ext=jpg
nf ()
{
ls -l $source | grep '-' | cut -c54,55,56,57,58,59,60,61
}
cd $source
for fichier in * $(nf)
do
#cp -v $fichier $destination$fichier.$ext
cp -v $fichier $destination$(nf).$ext
done
Mes images
laurent@PC-ubuntu:~/bash/Ubuntu_12.04$ ls -F /home/laurent/Images/diapos/2/ 3/ PICT0003.JPG PICT0006.jpg PICT0008.JPG. PICT0011.JPG. PICT0014.JPG. PICT0017.JPG. PICT0001.JPG PICT0004.JPG PICT0006.JPG PICT0009.JPG. PICT0012.JPG. PICT0015.JPG. PICT0018.JPG. PICT0002.JPG PICT0005.JPG PICT0007.JPG. PICT0010.JPG. PICT0013.JPG. PICT0016.JPG. PICT0019.JPG. laurent@PC-ubuntu:~/bash/Ubuntu_12.04$
Merci
6 réponses
-
Re,
Non en fait ce que je cherche à savoir c'est si ces fichiers existent bel et bien et s'il faut aussi les renommer en supprimant le point final ?
Oui il existe bel et bien sur la carte sd de l'appareil photo, mais attention il change de nom de fichier en fonction du nombre de photos prises :PICT0007.JPG PICT0008.JPG PICT0009.JPG PICT00010.JPG etc...
Oui les supprimer si possible de la sd carte de l'appareil photo une fois déplacer ou copier.
Pour mener à bien la conception d'un script (ou commande) il faut avoir toutes les cartes en main, sans quoi on a vite fait de patauger ;-\
Tout à fait d'accord avec vous.
Merci.-
La solution de dubcek est la plus appropriée (je l'ai adoptée pour prendre en compte le point final) :
$ ls PICT0001.JPG PICT0005.JPG PICT0008.JPG. PICT0012.JPG. PICT0016.JPG. PICT0002.JPG PICT0006.jpg PICT0009.JPG. PICT0013.JPG. PICT0017.JPG. PICT0003.JPG PICT0006.JPG PICT0010.JPG. PICT0014.JPG. PICT0018.JPG. PICT0004.JPG PICT0007.JPG. PICT0011.JPG. PICT0015.JPG. PICT0019.JPG. $ rename -n 's/\.JPG\.*$/.jpg/' *.JPG* PICT0001.JPG renamed as PICT0001.jpg PICT0002.JPG renamed as PICT0002.jpg PICT0003.JPG renamed as PICT0003.jpg PICT0004.JPG renamed as PICT0004.jpg PICT0005.JPG renamed as PICT0005.jpg PICT0006.JPG not renamed: PICT0006.jpg already exists PICT0007.JPG. renamed as PICT0007.jpg PICT0008.JPG. renamed as PICT0008.jpg PICT0009.JPG. renamed as PICT0009.jpg PICT0010.JPG. renamed as PICT0010.jpg PICT0011.JPG. renamed as PICT0011.jpg PICT0012.JPG. renamed as PICT0012.jpg PICT0013.JPG. renamed as PICT0013.jpg PICT0014.JPG. renamed as PICT0014.jpg PICT0015.JPG. renamed as PICT0015.jpg PICT0016.JPG. renamed as PICT0016.jpg PICT0017.JPG. renamed as PICT0017.jpg PICT0018.JPG. renamed as PICT0018.jpg PICT0019.JPG. renamed as PICT0019.jpg $
Si c'est bon, enlève le "-n".
-
-
Salut,
Pas la peine de tarabiscoter ton script de la sorte ;-\
Avec le remplacement des paramètres du shell (bash 4 je suppose), c'est faisable...
Quelques exemples :
$ var="/home/laurent/Images/diapos/2/PICT0001.JPG" $ echo "${var%/*}" /home/laurent/Images/diapos/2 $ echo "${var#*.}" JPG $ new_var="${var#*.}" $ echo ${new_var} JPG $ echo ${new_var,,} jpg $
Par contre dans ton répertoire on voit des fichiers ayant un point final (PICT0007.JPG.), c'est quoi ce truc ?
-
hello
et avec (enlever le -n pour agir)rename -n 's/PICT00/DCS00/;s/\.JPG/.jpg/' *.JPG
-
Bonjour Zipe31,
Par contre dans ton répertoire on voit des fichiers ayant un point final (PICT0007.JPG.), c'est quoi ce truc ?
L'objectif est de renommé l'extension des fichiers dans un dossier.*.JPG ----> .jpg PICT0001.JPG ----> PICT0001.jpg PICT0002.JPG ----> PICT0002.jpg PICT0003.JPG ----> PICT0003.jpg etc...
Car une fois les photos transférées de mon appareil photo sur mon disque dur les images ont l'extension "JPG", et quand je veux les publier sur le net, elle ne sont pas reconnu en tant que tel et suis obligé de les renommer en "jpg"manuellement a la main.
Version bashlaurent@PC-ubuntu:~/bash/Ubuntu_12.04$ bash --version GNU bash, version 4.2.24(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html> laurent@PC-ubuntu:~/bash/Ubuntu_12.04$
Je ne comprends pas trop bien comment utiliser dans mon script ce que vous me dites comme variable système.
Au début j'avais fait ceci mais je n'ai pas trouvé la solution à mon problème.#! /bin/bash for fichier in $HOME/Images/diapos/2/* do echo $(basename $fichier .${fichier##*.}) done
Merci.-
Re-
L'objectif est de renommé l'extension des fichiers dans un dossier.
*.JPG ----> .jpg
Oui ça j'avais bien compris. Mais dans ton listing en fin de ton 1er message, certains fichiers ont un point final dans leur nom.
Donc est-ce vraiment le cas ? Il est important de le savoir, sans quoi toutes solutions apportées ne marcheront pas à 100%.
Pourquoi veux-tu déplacer les fichiers dans un nouveau répertoire ? Est-ce vraiment utile ?
Si ce n'est pas utile, la solution donnée par dubcek serait beaucoup plus adaptée à ton cas, sous réserve de ta réponse concernant le point final sur le nom de certains fichiers...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
Vous voulez dire comme ceci :
"PICT0007.JPG."
Non c'est du a un erreur de test du script.
Il ne faut pas de point après l'extension ".JPG."
Pourquoi veux-tu déplacer les fichiers dans un nouveau répertoire ? Est-ce vraiment utile ?
Pour récupérer les photos sur la sd carte de l'appareil photo afin de les transférer vers mon disque dur avec la bonne extension.
/media/sdf /* sHOME/Images/photos/date/nom-fichier-image.jpg
Merci. -
Re,
Merci Zipe31.
Voilà j'ai fini mon script.
Je le diffuse car j'ai le même problème avec des appareils photo (un Fuji et un Sony) y compris avec les scanners (un Brother, un Epson et un Medion).
Tout crée les images avec l'extension .JPG
Je pense que tout le monde doit avoir le me problème.
Intérêt de ce script :
- il renomme les images. JPG en images Jpg
- Vous pouvez modifier le chemin des dossiers sources et de destination par défaut directement dans le code.
- Vous pouvez indiquer depuis le shell l'emplacement des dossiers sources et de destination si ceux par défaut ne sont pas corrects.
- Si le l'emplacement des dossiers sources et de destination vous sont corrects, il vous suffit d'appuyer sur la touche Entrer.
Merci.
Code#!/bin/bash echo "" echo "+---------------------------------------------------------------+" echo "| Renomme l'extension des images JPG en jpg de l'appareil photo |" echo "+---------------------------------------------------------------+" echo "| Mis à jour : 11/02/2013 |" echo "+---------------------------------------------------------------+" echo "" #---------- CONFIGURATION DES VARIABLE DU SCRIPT ----------- source_default="$HOME/Images/diapos/2/" destination_default="$HOME/Images/diapos/2/3/" corbeille="$HOME/.local/share/Trash/files/" #---------- VERIFIE SI LE PAQUET EST INSTALLE ----------- paquet=trash-cli dpkg --get-selections | grep -w ^$paquet[^-] >/dev/null if [ 'echo $?' -eq 1 ]; then Code echo "le paquet $paquet n'est pas installé" echo "Veuillez installer le paquet $paquet pour continuer" echo "sudo apt-get install $paquet" exit else echo "Vérification OK........ Le paquet $paquet est installé" fi echo "" echo "Veuillez indiquer le chemin la ou ce trouve les photos sur de la carte memoire de l\'appareil photo" read -p "Par défault : $source_default appuyer sur la touche entrée si correct : " source_choisi [ -n "$source_choisi" ] && source_default=$source_choisi echo "Vous avez choisi : $source_default" echo "" echo "Veuillez indiquer le chemin ou placer les photo sur votre disque dur" read -p "Par défault : $destination_default appuyer sur la touche entrée si correct : " destination_choisi [ -n "$destination_choisi" ] && destination_default=$destination_choisi echo "Vous avez choisi : $destination_default" cp -v $source_default*.JPG $destination_default echo "" cd $destination_default echo "Simulation des fichiers à renomer" rename -n 's/\.JPG\.*$/.jpg/' *.JPG* echo "" echo "Est-ce correct, voulez-vous continuer............ (o/n)" read question1 case $question1 in y|Y|o|O) echo "Continuer........" echo "" rename 's/\.JPG\.*$/.jpg/' *.JPG* echo "" echo "Voici les fichiers renommer :" echo "Emplacement : $destination_default" ls cd ~ echo "Terminé" echo "" ;; n|N) echo "Annulé par l'utilisateur" echo "" cd ~ exit ;; *) echo "Erreur de frappe, touche incorrecte, veuillez recommencer !" exit ;; esac echo "Faut il supprimer les images de l'appareil photo........................ (o/n)" echo "ATTENTION, une fois les fichiers supprimez-vous pourrez les récupérer avec la corbeille !" echo "Si la corbeille n'a pas été vidée entre-temps !" echo "" read -p "Êtes vous sûr de supprimer les images de l'appareil photo............ (o/n)" question2 case $question2 in y|Y|o|O) echo "Suppression des fichiers *.JPG ........" echo "" trash-put $source_default*.JPG echo "" ;; n|N) echo "Suppression des fichiers annulé par l'utilisateur" echo "" cd ~ exit ;; *) echo "Erreur de frappe, touche incorrecte, veuillez recommencer !" exit ;; esac