#1 Le 01/03/2008, à 13: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