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 01/03/2008, à 14:56

libre

Nautilus-script - Renommer fichiers et répertoires sans ponctuation

Débutant de 6 mois dans le monde Ubuntu.
J'ai remarqué que beaucoup de commande bash ainsi que de nombreux programmes ne peuvent gérer la ponctuation française dans les noms de fichiers.
Après plusieurs recherches veinent sur internet et afin de convertir mes noms de fichier j'ai finalement essayé de créer mon propre script.

Pourquoi ?
La ponctuation française est en effet un gros problème pour beaucoup de commande Ubuntu.

Exemples: les fichier mp3
1-Vous avez des milliers de fichiers mp3.
2-Vous avez mis à jours leurs tag ID3 (via easytag) et beaucoup de vos tag contienne des caractères tels que é,è,ê,ë,&,ô,...
3-Vous utilisez la fonction scanner (easytag) afin de renommer vos fichiers mp3 suivant leurs tag ID3.
4-Et là, rythmbox ne peut gérer vos mp3 car leurs noms de fichier contiennent des caractères accentuées ou des espaces.


J'essaye donc de faire un nautilus-script qui renommera les fichiers et répertoires en suppriment toutes la ponctuations française.

Voiçi ou j'en suis:
Si l'on sélectionne des fichiers avant de lancer le script: le nom de ses fichiers vont être modifié
Si l'on ne sélectionne aucun fichier avant de lancer le script: tous les noms des fichiers et répertoires vont être modifié récursivement .

#!/bin/bash
#
# CONVERTISSEUR DE NOM DE FICHIERS/REPERTOIRES
# --------------------------------------------
#
# Convertit les noms de fichiers/répertoires contenant des caractères accentuées ou génants
# pour notre système d'exploitation Linux
#
# Exemples: 
#	Salut les amis.mp3 			 > Salut_les_amis.mp3
#	J'ai bien mangé.mp3 			 > J_ai_bien_mange.mp3
#       C'est celà, à côté de mon château.avi	 > C_est_cela_a_cote_de_mon_chateau.avi
#       Papa & maman				 > Papa_et_maman
#
#
# Version: 1.0

 
IFS=$'\n'
position=1
_monTitre="Conversion"

if  [ "$#" -eq 0 ]
then
	cmd=`find $PWD`

	#Trouve le nombre de fichiers/répertoires, les comptes et décrémente le résultat de 1
	nombre=$(expr $(find $PWD | wc -l) - 1)

	zenity --question --title "Renommer sans accentuation" \
		--text "Nombres de sélection: $nombre\rRépertoire de départ  : `echo $PWD`\rMode de recherche    : récursif\r\rSouhaitez-vous continuer ?"
	if [ "$?" == 1 ] ; then exit ; fi


	
	
else
	cmd=$*

	#Nombre de fichiers/répertoires sélectionnés
	nombre=$#
	zenity --question --title "Renommer sans accentuation" \
		--text "Nombres de sélection: $nombre\rRépertoire de départ  : `echo $PWD`\rMode de recherche    : non récursif\r\rSouhaitez-vous continuer ?"
	if [ "$?" == 1 ] ; then exit ; fi

fi



for i in $cmd
do

	# Remplacement des caractères problèmatiques 
	a=`echo $i | sed -e "s/[éèêë]/e/g" \
		   | sed -e "s/[îï]/i/g" \
                   | sed -e "s/[àâä]/a/g" \
                   | sed -e "s/[ùûü]/u/g" \
    		   | sed -e "s/[ôö]/o/g" \
                   | sed -e "s/[ç]/c/g" \
                   | sed -e "s/[ ',]/_/g" \
                   | sed -e "s/[();:,?!*]//g" \
                   | sed -e "s/[&]/et/g"`

	#Renomme le fichier/répertoire
	mv "$i" "$a"

	#Mise à jour de zenity --progress
	compteur=`echo "scale=6; (100/$nombre)*$position" | bc`
	echo "$compteur" 
	echo "# $_monText fichiers $position/$nombre"
	position=`expr $position + 1`

done | zenity --progress --auto-close --title "$_monTitre" --text "$_monText" --percentage=0 --width=200

zenity --info --title "Résultats" --text="Conversion de "$compteur" fichiers/répertoires terminé"


Cette version n'est pas la version finale, je la modifierai suivant mes test ainsi que de vos conseils, remarques ou propositions qui sont, bien entendu, les bienvenues


La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.

Hors ligne