renommer des fichiers pour enlever les espaces dans les noms - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 17-03-2005 à 09:44:49
pour remplacer le/les espace(s) d'un nom de fichier, tu peux utiliser sed (un peu grüik, mais bon) 
 
| echo "ton fichier     trop             long"| sed 's/  */_/g'  | 
Marsh Posté le 17-03-2005 à 10:48:26
Je dois avoir 400 fichiers répartis dans des répertoires/sous répertoires. Il s'agit d'un CD-rom brulé par un Mac et que j'aimerais copier sur une partition VFAT.
Marsh Posté le 17-03-2005 à 11:57:48
J'avais fait un petit script a une epoque pour mes MP3 lors du passage de Windows a Linux 
 
(Pour tester, mets en commentaire la ligne qui contient le mv et decommente la ligne avec le echo tout en bas du script) 
 
# 
# mou_mp3.sh 
# 
# This script modify the name of my mp3 
# 
# Copyright 2004 BiBiMax 
# 
 
cd "$1" 
for i in * ; do 
    newname=`echo $i | sed -e s/\ /\_/g | 
    sed -e s/\é/\e/g | 
    sed -e s/\è/\e/g | 
    sed -e s/\ê/\e/g | 
    sed -e s/\ë/\e/g | 
    sed -e s/\©/\e/g | 
    sed -e s/\à/\a/g | 
    sed -e s/\â/\a/g | 
    sed -e s/\ä/\a/g | 
    sed -e s/\î/\i/g | 
    sed -e s/\ï/\i/g | 
    sed -e s/\ô/\o/g | 
    sed -e s/\ö/\o/g | 
    sed -e s/\û/\u/g | 
    sed -e s/\ü/\u/g | 
    sed -e s/\ÿ/\y/g | 
    sed -e s/\(/\-/g | 
    sed -e s/\)/\-/g | 
    sed -e s/\Ã/\a/g | 
    sed -e s/\¹//g | 
    sed -e s/\¶//g | 
    sed -e s/\Â//g | 
    sed -e s/\//g | 
    sed -e s/\µ/\u/g | 
    sed -e s/\+/et/g | 
    sed -e s/a©/e/g | 
    sed -e s/a/e/g | 
    sed -e s/a§/c/g | 
    sed -e s/\&/et/g | 
    sed -e s/\'/_/g | 
    sed -e s/\°//g | 
    sed -e s/\ /\_/g` 
#    echo $newname 
    mv "$i" "$newname" 
done 
 
et pour le lancer sur tous les sous-repertoires d'un repertoire 
 
find . -type d -exec ./mou_mp3.sh {} \; 
 
En esperant que ca t'aidera.
Marsh Posté le 17-03-2005 à 12:38:58
il existe un ptit truc merveilleux qui s'appelle rename !  
 
 
 
sudo apt-get install rename 
rename 's/ /_/g' /ton/rep/*
Marsh Posté le 17-03-2005 à 12:54:02
et si il y a 2 espaces consécutifs ?  
 
 
dans ce cas c'est  
| rename 's/ */_/g' /ton/rep/* | 
(avec 2 espaces avant */ )
Marsh Posté le 17-03-2005 à 14:59:36
oki, en fait, je viens de me rendre compte que ce n'était pas des espaces... mais alors qu'est ce donc ? 
comment faire pour mettre en paramettre de rename un autre caractere blanc (espace insécable ou un truc de ce gout ?) Comment trouver le code exact de ce caractere ? 
Marsh Posté le 22-03-2005 à 09:34:03
| xpoulet a écrit : et si il y a 2 espaces consécutifs ?  
   (avec 2 espaces avant */ ) | 
 
roh ptain c'était pour montrer que ça existe, pas pour filer un cours de regexp... 
Marsh Posté le 22-03-2005 à 09:35:12
| axel584 a écrit : oki, en fait, je viens de me rendre compte que ce n'était pas des espaces... mais alors qu'est ce donc ?  | 
 
s/\W/_/g 
 
 
Marsh Posté le 22-03-2005 à 14:44:30
| minusplus a écrit : roh ptain c'était pour montrer que ça existe, pas pour filer un cours de regexp...  | 
 
Ne fais pas ton Bordelais toi 
Marsh Posté le 25-03-2005 à 17:53:38
Reply
Marsh Posté le 17-03-2005 à 08:12:51
Bonjour,
Je recherche à renommer les noms de repertoire et de fichiers pour supprimer les espaces (en les remplçant par des _) ainsi que tous les caracteres bizarres (@ < etc.)
J'ai essayé krename sans succes. P'tet qu'un bout de code serait plus efficace ?
Merci,
Axel