Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash vient d'être divulguée, il est recommandé de mettre à jour son système (plus de détails)

*** 28 sept. nouvelle mise à jour (4.2-2ubuntu2.5 ou 4.3-7ubuntu1.4) *** pour mettre à jour, lancez dans un terminal :
sudo apt-get update ; sudo apt-get upgrade bash

#51 Le 20/11/2009, à 10:51

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

tu peux tester également avec mon script (message 45).

comme ça tu pourra faire un retour smile (il prend le recursif aussi)

Hors ligne

#52 Le 20/11/2009, à 11:01

Lapogne71

Re : [Script] pour renommer les fichiers avec problèmes d'accents

TOXIC a écrit :

Ok, alors j'avoue ne pas avoir eu le courage de tout lire... Mais...

3/ J'ai un soucis : ca fait des erreurs :

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),

Alors comme je ne suis pas un crack de PERL, je ne sait pas quoi faire...

Edit :

Il semblerait qu'un "banal" export LC_ALL="fr_FR.UTF8" ait suffit a faire disparaitre le message d'erreur... En espérant maintenant que le script qui ne trouve aucun fichier mal codé ne se trompe pas... Je lance la copie, résultat dans 22h pour savoir si le script aurait oublié des fichiers mal codés....

Concernant les erreurs de Perl, c'est certainement comme tu le mentionnes un problème de "locale" : chez moi la commande "locale" (à taper dans un terminal) me retourne que des valeurs = "fr_FR.UTF-8" , sauf LC_ALL qui est vide.

Que utilises l'un ou l'autre script, en récursif, veilles bien à ce que le résultat affiché soit cohérent, c'est à dire que tous les caractères accentués (dans l'affichage de la simulation) soient restitués. Je pense dans tout les cas qu'il faut éviter d'appliquer le programme récursivement sur des dossiers/fichiers provenant de différentes sources (windows, mac, zip , ...)

Exemples : 1) tu récupères sur ubuntu un zip contenant toute une partition windows et tu la décompresses
                    ==> tu peux faire une conversion récursive
                   2) tu as sur ubuntu un dossier "download" qui accueille tout tes téléchargements (du web, de ton email, de tes vieux CDR archivés...)
                    ==> pas de conversion récursive !!! il risque d'y avoir plusieurs encodages de caractères en jeu !

Hors ligne

#53 Le 20/11/2009, à 11:26

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

en effet, dans le 1er cas, je pense que mon script est plus pratique, dans le 2 eme c'est plutot le tien smile

Hors ligne

#54 Le 27/01/2010, à 08:10

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

bon bah j'ai mixé les 2 scripts...

cela utilise convmv mais affiche les différences :

#!/bin/bash

### Variables ###

VERSION="v0.04"

# Couleurs du texte affiché dans le shell
FUSHIA="\033[1;35m"
NOIR="\033[1;0m"
BLEU="\033[1;34m"
VERT="\033[1;32m"
ROUGE="\033[1;31m"

# Liste des encodages les plus courants
CODES_LIST="iso-8859-1 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 iso-8859-10 iso-8859-11 iso-8859-13 iso-8859-14 iso-8859-15 iso-8859-16 cp437 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp932 cp936 cp949 cp950 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258" 



### Intro ###

echo -e "
----------------------------------------------------------
 ${BLEU}Ce script permet de lancer en boucle l'utilitaire convmv qui 
 permet de convertir les noms de fichiers codés en autre chose 
 que UTF-8 vers UTF-8. Relancer le script avec l'argument
 ALLCODES si jamais aucun résultat n'a été trouvé.
 
 ${FUSHIA}Version ${VERSION}${NOIR}
----------------------------------------------------------"

# Vérification de l'existence de convmv
if [[ -z $(dpkg -l | egrep "^ii  convmv") ]]
then
	echo -e "\n${ROUGE}Le logiciel convmv n'est pas installé, il est nécessaire à ce script, faut-il l'installer ?${NOIR}"

	# Propose l'installation direct du logiciel
	read -p "[O]ui [N]on" confirmation_installation

	# Verifie le choix de l'installation du logiciel
	if [[ ${confirmation_installation} == [OoYy]* ]]
	then
		sudo apt-get -y --force-yes install convmv

	else
		exit
	fi
fi


# Pour boucler sur tous les codepages supportés par convmv, il faut mettre ALLCODES en argument
if [[ "${1}" = "ALLCODES" ]]
then
	# Affecte tous les codages connus de convmv à la variable CODES_LIST
	CODES_LIST=$(convmv --list | tr '\n' ' ')
fi


# Demande de l'utilisation de la récursivité
echo
read -p "Voulez-vous agir de façon recursive (modification des sous dossiers) ? [O]ui [N]on [E]xit : " RECURSIVITE

if [[ ${RECURSIVITE} == [Ee]* ]]
then
	echo -e "\n${ROUGE}Arret du script.${NOIR}\n"
	exit

elif [[ ${RECURSIVITE} == [Oo]* ]]
then
	OPTION_R="-r"
fi



### Boucle principale ###

for CODAGE in ${CODES_LIST}
do
	echo -e "\n${BLEU}Hypothèse du codage : ${FUSHIA}${CODAGE}${NOIR}"

	# Recher des fichiers n'etant pas en UTF-8
	LISTE_FICHIER=$(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ")

	# Vérifie qu'il y ait bien des fichiers à renommer
	if [[ -z ${LISTE_FICHIER} ]]
	then
		echo -e "\n${ROUGE}Aucun nom de fichier à convertir.${NOIR}\n"
		exit

	else
		# Nombre de fichier à renommer
		NOMBRE_FICHIERS=$(echo "${LISTE_FICHIER}" | wc -l)
		echo -e "\n${FUSHIA}${NOMBRE_FICHIERS}${NOIR} fichiers à convertir."
	fi

	for ((i=1; i<=${NOMBRE_FICHIERS}; i++))
	do
		LIGNE=$(sed -n ${i}p <<< "${LISTE_FICHIER}")

		# Récupération du nom corrompu
		ANCIEN_NOM=$(cut -f2 -d '"' <<< "${LIGNE}")

		# Récupération du nom corrigé
		NOUVEAU_NOM=$(cut -f4 -d '"' <<< "${LIGNE}")

		echo -n -e "\n${VERT}Convertion de ${NOIR}"

		for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
		do
			LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
			LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}

			# Comparaison des caracteres entre eux
			if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
			then
				echo -n -e "${LETTRE_ORIGINALE}"
			else
				echo -n -e "${BLEU}${LETTRE_ORIGINALE}${NOIR}"
			fi
		done

		echo -n -e "${VERT} en ${NOIR}"

		for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
		do
			LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
			LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}

			# Comparaison des caracteres entre eux
			if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
			then
				echo -n -e "${LETTRE_CORRIGEE}"
			else
				echo -n -e "${FUSHIA}${LETTRE_CORRIGEE}${NOIR}"
			fi
		done

	done

	# Demande de confirmation du codage à utiliser
	echo -e "\n${FUSHIA}${NOMBRE_FICHIERS}${NOIR} fichiers à convertir."

	read -p "Ce codage est-il le bon ? [O]ui [N]on [E]xit : " BON_CODAGE

	if [[ ${BON_CODAGE} == [Ee]* ]]
	then
		echo -e "\n${ROUGE}Arret du script.${NOIR}\n"
		exit

	elif [[ ${BON_CODAGE} == [OoYy]* ]]
	then
		convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * --notest &>/dev/null

		# Vérification de l'abscence de fichier corrompu
		if [[ -z $(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ") ]]
		then
			echo -e "\n${BLEU}Tous les fichiers ont été renommés.${NOIR}\n"
			exit

		else
			echo -e "\n${ROUGE}Tous les fichiers n'ont pas été renommés.${NOIR}\n"
			exit
		fi
	fi

	# Mise au propre du terminal
	clear
done

y a une certaine différence de temps entre avec et sans les couleurs de différences mais avec un test de 700 fichiers à modifier, l'affichage à durer 30sec...

Dernière modification par Hizoka (Le 28/01/2010, à 09:32)

Hors ligne

#55 Le 27/01/2010, à 20:37

Lapogne71

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Tu as du y passer du temps !

Il faudrait juste apporter une correction à la ligne

if [[ -z $(dpkg -l | egrep "^ii  dialog") ]]

et remplacer dialog par convmv (même si je suis pas trop fan des "sudo" dans un script, un plaisantin pourrait inclure des "sudo rm" bien cachés dans le script ... smile )

Ensuite il y a un bug mais çà vient directement de convmv : au moment où tu affiches les différences en couleurs,  lorsque 2 dossiers imbriqués ont des caractères invalides, convmv ne propose la correction que sur le 2eme dossier.

Merci d'avoir relevé le défi d'afficher les couleurs, c'est beaucoup plus lisible !

En tout cas félicitations, çà märche sûpèr bîën ! wink

Hors ligne

#56 Le 28/01/2010, à 09:33

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

merci pour la faute,

pour le bug, je l'avais remarqué mais c'est pas franchement gênant smile

après quelques test, il en ressort que convmv est bien plus pratique.

voilou, ce fut un plaisir smile

On peut peut-être créer une page sur la doc ?

Hors ligne

#57 Le 28/01/2010, à 20:20

twocats

Re : [Script] pour renommer les fichiers avec problèmes d'accents

À

if [[ -z $(dpkg -l | egrep "^ii  convmv") ]]
then

préfères :

if ! type -p convmv >/dev/null 2>&1
then

plus court et plus portable.


La réponse est 42

Hors ligne

#58 Le 10/03/2010, à 22:46

Matthieu20

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Merci beaucoup Lapogne71 et hizoka pour la création de ces 2 scripts très utile.


Programmez en ActionScript simplement et avec efficacité : ActionScript-Facile.com

Hors ligne

#59 Le 11/03/2010, à 00:09

Lapogne71

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Matthieu20 a écrit :

Merci beaucoup Lapogne71 et hizoka pour la création de ces 2 scripts très utile.

Je viens de mettre à jour le post d'origine afin de prendre en compte la dernière version du script d'hizoka et les captures d'écran correspondantes.

Hors ligne

#60 Le 10/05/2010, à 17:35

FreelY

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Salut

Merci à vous deux pour ces super scripts bien pratique!

Hizoka il n'y a pas de comparaison avant de d'effectuer les modifications je trouve ça bien dommage/dangereux.
Et c'est pas une critique mais il est vraiment accès pour les unbuteros (je sais c'est un forum ubuntu...). 

line 32: dpkg : commande introuvable
Le logiciel convmv n'est pas installé, il est nécessaire à ce script, faut-il l'installer ?  

Non non c'est déjà fait :p

J'adopte donc celui de Lapogne71 mais petite question:

Comment faire pour avoir ceci (afin de vérifier plus simplement les changements car j'ai "énormément" de fichiers à convertir).

Nom du fichier original 
...
Nom du fichier converti
...
Nom du fichier original
... 
Nom du fichier converti
...
ect ect
Codage trouvé ?

Et pas cela:

Noms de fichiers originaux codés
... liste de tout les fichiers originaux   
Noms de fichiers convertis
... liste de tout les fichiers convertis
Codage trouvé ?

D'avance merci wink

Dernière modification par FreelY (Le 11/05/2010, à 06:39)


NON AUX RACKETiciels!
[ ARCH ]  [ Clavier BÉPO ]

Hors ligne

#61 Le 10/05/2010, à 19:40

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

line 32: dpkg : commande introuvable

tu fais comment pour que ce soit portable ?

Hizoka il n'y a pas de comparaison avant de d'effectuer les modifications je trouve ça bien dommage/dangereux.

Bah de memoire si, il te montre les differences en mettant de la couleur sur les differences...

je peux toujours me repencher dessus cette semaine.

pour ta demande sur le script de Lapogne71, ça va faire pas mal de modif je pense... l'intérêt c'est juste de regarder la liste de résultat pour vérifier que c'est bien le bon encodage.

Hors ligne

#62 Le 10/05/2010, à 21:33

Lapogne71

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Bah c'est bizarre, depuis l'upgrade vers la 10.04 les scripts (et convmv tout seul aussi) ne fonctionnent plus, ils ne trouvent rien à convertir, comme si les noms de fichiers étaient forcés en UTF-8 mais en ayant gardé les caractères invalides ... Du coup pour l'instant je peux pas essayer les modifs suggérées par FreelY ...

Hors ligne

#63 Le 11/05/2010, à 01:09

FreelY

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Hizoka a écrit :

tu fais comment pour que ce soit portable ?

Portable c.a.d. du code en plus dans le script pour que ce soit universel et qu'il s'installe sur toute les distributions?
Désolé je ne connais quasiment rien en scripts...
.
Là j'ai juste changé la partie texte du script à Lapogne71 pour que ça donne ça si il n'est pas installer:

convmv_UTF8.sh     v0.04

----------------------------------------------------------
Ce script permet de lancer en boucle l'utilitaire convmv qui permet de convertir les noms de
fichiers codés en autre chose que UTF-8 vers UTF-8.
Relancer le script avec l'argument ALLCODES si jamais aucun résultat n'a été trouvé.
----------------------------------------------------------
ERREUR : convmv n'est pas installé, veuillez l'installer en tapant :

Sous Arch Linux:
       sudo pacman -S convmv

Sous Debian/Ubuntu:
       sudo apt-get install convmv

# On vérifie si l'utilitaire convmv est bien installé
chemin=`which convmv 2> /dev/null`
if [ -z "$chemin" ] ; then
	echo -e "$RED ERREUR : convmv n'est pas installé, veuillez l'installer en tapant : "
	echo
	echo -e "$NORMAL Sous Arch Linux: "
	echo -e "$BLUE 	  sudo pacman -S convmv "
    echo
	echo -e "$NORMAL Sous Debian/Ubuntu: "
	echo -e "$BLUE 	  sudo apt-get install convmv "
	echo
	echo
	echo -e "$NORMAL "
	exit 1
fi

Et j'ai supprimé aussi la première ligne car javais:

 convmv_UTF8.sh: line 1: !/bin/bash: Aucun fichier ou dossier de ce type

.
.

Lapogne71 a écrit :

Du coup pour l'instant je peux pas essayer les modifs suggérées par FreelY ...

Si! il y a toujours tes zips de tests big_smile ça ne fonctionne pas?

Dernière modification par FreelY (Le 11/05/2010, à 06:22)


NON AUX RACKETiciels!
[ ARCH ]  [ Clavier BÉPO ]

Hors ligne

#64 Le 11/05/2010, à 06:45

Lapogne71

Re : [Script] pour renommer les fichiers avec problèmes d'accents

FreelY a écrit :

Et j'ai supprimé aussi la première ligne car javais:

 convmv_UTF8.sh: line 1: !/bin/bash: Aucun fichier ou dossier de ce type

==> tout bon script doit commencer par la description du shell à utiliser. ici j'ai choisi "bash".
Normalement il y a un # au début de cette ligne, vérifie que tu ne l'as pas toi-même effacée !

FreelY a écrit :
Lapogne71 a écrit :

Du coup pour l'instant je peux pas essayer les modifs suggérées par FreelY ...

Si! il y a toujours tes zips de tests big_smile ça ne fonctionne pas?

==> oui mais çà ne donne rien, et en lançant directement convmv "à la main", je n'obtiens que des "already UTF-8" :

=>convmv -f iso-8859-15 -t utf-8 *
Starting a dry run without changes...
Skipping, already UTF-8: ./1_dossier_avec_accents-����������������
Skipping, already UTF-8: ./1_fichier_avec_accents-����������������.txt
No changes to your files done. Use --notest to finally rename the files.

Hors ligne

#65 Le 11/05/2010, à 08:34

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

ok pour ton conseil de wich, mais je ne peux pas indiquer pour chaque distribution quelle est la commande d'installation...

en appliquant tes modifs, mon code devrait passer chez toi...

perso les script fonctionnes chez moi.

je regarderai ca plus tard car la je vais au dodo et je retaf ce soir.

mais promis je me repencherai dessus.

essai de dire clairement ce que tu voudrais que fasse le script, que je suive ton idee et ton besoin.

Dernière modification par Hizoka (Le 11/05/2010, à 08:34)

Hors ligne

#66 Le 11/05/2010, à 14:20

twocats

Re : [Script] pour renommer les fichiers avec problèmes d'accents

ok pour ton conseil de wich, mais je ne peux pas indiquer pour chaque distribution quelle est la commande d'installation...

Pourquoi pas ?
Pour connaître la distrib tu crée la variable OS

OS="$(lsb_release -i -s|tr "[:upper:]" "[:lower:]")"

Ensuite tu peux faire un test de dépendance ainsi :

for PROG_REQ in convmv
do
	if ! type -p ${PROG_REQ} >/dev/null 2>&1
	then
		echo -e "\n${ROUGE}Le logiciel ${PROG_REQ} n'est pas installé, il est nécessaire à ce script, faut-il l'installer ?${NOIR}"
		read -p "[O]ui [N]on" confirmation_installation
		if [[ ${confirmation_installation} == [OoYy]* ]]
			then
				case "${OS}" in
					archlinux ) sudo pacman -S ${PROG_REQ} ;;
					debian ) echo -e "Veuillez passer en root et taper la commande suivante :\napt-get install ${PROG_REQ}"; exit 0 ;;
					mandrivalinux ) echo -e "Veuillez passer en root et taper la commande suivante :\nurpmi ${PROG_REQ}"; exit 0 ;;
					ubuntu ) sudo apt-get -y --force-yes install ${PROG_REQ} ;;
				esac
		else
			exit 0
		fi
done

Je ne suis pas sûr que OS donne archlinux pour ARCH. Il faudrait que FreelY nous donne la sortie de la commande :

lsb_release -i -s

J'utilise 'type' plutôt que 'which' car 'type' est une commande builtin, intégrée à bash alors que 'which' est un programme externe.


La réponse est 42

Hors ligne

#67 Le 11/05/2010, à 17:53

FreelY

Re : [Script] pour renommer les fichiers avec problèmes d'accents

@Lapogne71 
Oups effectivement j'ai supprimé le # par erreur... :s 

@Hizoka
Avec la petite modification: copie de la partie de Lapogne71 "On vérifie si l'utilitaire convmv est bien installé" dans ton script ça fonctionne et y a bien l'affichage des modifications avant renommage, je n'ai rien dis... il est nickel ton script!
Il sera vraiment parfait si y a une technique pour automatiser l'installation de convmv en fonction de la distrib, mais la c'est vraiment pour pinailler et avoir la cerise sur le gâteau. tongue Il me convient très bien comme ça.   

@twocats
"lsb_release -i -s" ne me donne rien, j'ai du faire l'installation du paquet "lsb-release" et là ça donne:

$lsb_release -i -s
arch

Sinon pour info:

$uname -a
Linux ArchLinux 2.6.33-ARCH #1 SMP PREEMPT Sun May 2 10:40:03 CEST 2010 x86_64 AMD Phenom(tm) II X4 925 Processor AuthenticAMD GNU/Linux
$cat /proc/version
Linux version 2.6.33-ARCH (tobias@LX-Laptop) (gcc version 4.5.0 (GCC) ) #1 SMP PREEMPT Sun May 2 10:40:03 CEST 2010

NON AUX RACKETiciels!
[ ARCH ]  [ Clavier BÉPO ]

Hors ligne

#68 Le 11/05/2010, à 18:37

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

ok, des que je peux je le fais, promis.

Hors ligne

#69 Le 12/05/2010, à 23:05

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

allez voir http://forum.ubuntu-fr.org/viewtopic.php?pid=3473413 pour tester mes commandes pour me donnez vos résultats svp.

Hors ligne

#70 Le 21/10/2010, à 18:11

nec

Re : [Script] pour renommer les fichiers avec problèmes d'accents

Merci pour ce script bien pratique, et encore merci de partager.

Très sympa smile

Hors ligne

#71 Le 27/12/2010, à 01:06

mikryx

Re : [Script] pour renommer les fichiers avec problèmes d'accents

UN ÉNORME merci à vous pour ces scripts, ca m'a permis d'arrêter ce soir de renommer tout à la main ... vraiment Énorme. big_smilelol


Mickael@Pc:~$  applique les mises à jour
T'as qu'à les faire toi-même
Mickael@Pc:~$  SUDO applique les mises à jour
toute suite votre majesté

Hors ligne

#72 Le 30/12/2010, à 08:37

teet

Re : [Script] pour renommer les fichiers avec problèmes d'accents

salut

que j'utilise l'un ou l'autre, j'ai un mauvais encodage, il m'affiche des carrés au lieu des caractères accentués.


manger du castor et vous sauverez un arbre !
ubuntu user 6419

Hors ligne

#73 Le 30/12/2010, à 09:16

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

upload un exemple de fichier si tu veux qu'on teste...

Hors ligne

#74 Le 30/12/2010, à 10:10

teet

Re : [Script] pour renommer les fichiers avec problèmes d'accents

ah zut, j'ai effacé les fichiers sources, il me reste que les renommés. Dès que j'en ai un je l'upload
Les fichiers exemples fonctionnent super bien.


manger du castor et vous sauverez un arbre !
ubuntu user 6419

Hors ligne

#75 Le 30/12/2010, à 10:20

Hizoka

Re : [Script] pour renommer les fichiers avec problèmes d'accents

je viens de l'utiliser à l'instant et pas de probleme non, il faut voir le fichier source...

Hors ligne

Haut de page ↑