Modifier l'extension des fichiers d'un dossier

Résolu/Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - Modifié par xunil2003 le 11/02/2013 à 00:52
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 11 févr. 2013 à 16:30
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 ??

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
A voir également:

6 réponses

xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 11/02/2013 à 12:25
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.
1
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 févr. 2013 à 12:26
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".
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 févr. 2013 à 10:14
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 ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 févr. 2013 à 11:16
hello
et avec (enlever le -n pour agir)
rename -n 's/PICT00/DCS00/;s/\.JPG/.jpg/' *.JPG
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 11/02/2013 à 11:44
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 bash
laurent@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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 févr. 2013 à 11:44
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 11/02/2013 à 12:08
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 févr. 2013 à 12:03
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 ?

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 ;-\
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
11 févr. 2013 à 16:22
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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 févr. 2013 à 16:30
Merci ;-)
0