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