Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Travailler sur un ensemble de fichiers récursivement
Envoyé par: thomas debay

Bonjour,
Je voudrais renommer tous mes fichiers pour virer les accents et les espaces. J'ai donc utilisé ce bout de script trouvé dans les Trucs et astuces de Léa :
for i in * ; do mv "$i" `echo $i | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` ; done
Le problème étant qu'il se limite aux fichiers du répertoire courant...

Comment faire pour passer dans les sous-répertoires ?

Merci d'avance.

Poste le Wednesday 28 June 2006 14:23:58
Répondre     Citer    
Re: Travailler sur un ensemble de fichiers récursivement
Envoyé par: nicola

Avec find et l’option -exec ? Tu as intérêt à essayer d’abord avec echo à la place de mv si tu veux éviter des ennuis.
J’ai trouvé ces deux bouts de code sur mon disque, à toi d’adapter. Le premier est récursif (ouais, je sais, c’est lourd).

> cat bin/tolower.sh
#!/bin/bash

echo "Entering `pwd`"
read

for i in *
  do
  if [ -d $i ]
  then
    cd $i
    tolower.sh
    cd ..
  fi
# Change the first "echo" below in "mv" to make the script an auto lower case renamer
  echo $i `echo $i|tr [:upper:] [:lower:]`
done

# Peut se faire avec la seule ligne suivante adaptée :
# find / -type f -exec mv {} `echo {} | sed -e "s/ //g"` \;

> cat bin/tounicode.sh
#!/bin/bash

for i in *; do mv "$i" "`echo $i | konwert iso1-utf8`";done

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Wednesday 28 June 2006 22:25:04
Répondre     Citer    
Re: Travailler sur un ensemble de fichiers récursivement
Envoyé par: thomas debay

Merci nicola, j'ai essayé de faire ça :
find /home/thomas/tests_renommage/ -type f -exec mv {} `echo $i | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` \;
Le problème étant que ce code me supprime tous les fichiers des sous-répertoires !
Je pense que j'utilise mal le "mv", il faudrait lui rajouter quelquechose, non ?

Merci de m'aider encore un peu car je suis relativement nul en shell... :-(

Poste le Thursday 29 June 2006 20:42:37
Répondre     Citer    
Re: Travailler sur un ensemble de fichiers récursivement
Envoyé par: Léa (Fred)

Tu t'es planté, t'as mis : $i à la place de \{}
find /home/fred/Documents/ -type f -exec mv \{} `echo \{} | /             
  tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` \;



Modifié 1 fois. Dernière modification le 01/07/06 09:20 par fred.

Poste le Saturday 1 July 2006 09:19:52
Répondre     Citer    
Re: Travailler sur un ensemble de fichiers récursivement
Envoyé par: thomas debay

Merci Fred mais je n'y arrive toujours pas...
Voici le contenu de mon dossier de test
thomas@thomas-1:~/test_renommage$ ls -lR
.:
total 4
-rw-r--r-- 1 thomas thomas    0 2006-07-01 11:32 é
-rw-r--r-- 1 thomas thomas    0 2006-07-01 11:18 Fifà
drwxr-xr-x 2 thomas thomas 4096 2006-07-01 11:17 temp
./temp:
total 0
-rw-r--r-- 1 thomas thomas 0 2006-07-01 11:17 fichééé
-rw-r--r-- 1 thomas thomas 0 2006-07-01 11:15 Fichier

Donc je lance la ligne que tu m'a donné : (je n'ai pas trop compris où il fallait mettre des retours à la ligne...)
thomas@thomas-1:~/test_renommage$ find /home/thomas/test_renommage/ -type f -exec mv \{} `echo \{} | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` \;
mv: `/home/thomas/test_renommage/temp/Fichier' et `/home/thomas/test_renommage/temp/Fichier' identifient le même fichier.
mv: `/home/thomas/test_renommage/temp/fichééé' et `/home/thomas/test_renommage/temp/fichééé' identifient le même fichier.
mv: `/home/thomas/test_renommage/Fifà' et `/home/thomas/test_renommage/Fifà' identifient le même fichier.
mv: `/home/thomas/test_renommage/é' et `/home/thomas/test_renommage/é' identifient le même fichier.

J'en conclus que la commande mv essaie de renommer un fichier vers son nom d'origine, d'où échec. Pour en être sur, j'ai testé avec :
thomas@thomas-1:~/test_renommage$ find /home/thomas/test_renommage/ -type f -exec `echo \{} | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` \;
find: /home/thomas/test_renommage/temp/Fichier: Permission non accordée
find: /home/thomas/test_renommage/temp/fichééé: Permission non accordée
find: /home/thomas/test_renommage/Fifà: Permission non accordée
find: /home/thomas/test_renommage/é: Permission non accordée
thomas@thomas-1:~/test_renommage$
Et effectivement j'ai ce problème... Je me suis trompé dans la ligne de commande ?

Poste le Saturday 1 July 2006 11:39:05
Répondre     Citer    
Re: Travailler sur un ensemble de fichiers récursivement
Envoyé par: Léa (Fred)

J'ai dans l'idée que c'est un problème d'encodage. Un truc du genre tr ne gère pas l'utf8.

Poste le Thursday 6 July 2006 15:18:30
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Travailler sur un ensemble de fichiers récursivement
Posez dans ce forum les questions qui ne trouvent pas place dans les autres...

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons