#1 Le 07/05/2007, à 22:04
- Goltia
[résolu]mv recalcitrant avec les variables contenant des mots avec...
Salut à tous.
Je m'explique :
si je fais
i=toto\ tata ; mv $i titi
Le gentil terminal me dit :
mv: la cible `titi' n'est pas un répertoire
Dernière modification par Goltia (Le 07/05/2007, à 23:51)
Hors ligne
#2 Le 07/05/2007, à 22:58
- Saito
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
Bonsoir,
C'est normal que ta commande ne marche pas: si tu donne plus de 2 arguments à mv, il considère qu'il doit déplacer les n-1 premiers fichiers arguments dans le n-ième argument répertoire, or ici il ne doit pas y avoir de répertoire titi dans ton répertoire courant. Concrètement, que veux-tu faire avec mv? Ce sera plus simple de te guider ainsi
Aku-Soku-Zan_Shinsengumi
Hors ligne
#3 Le 07/05/2007, à 23:02
- Goltia
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
En gros j'ai une liste de fichier avec un numéro.
Je veux faire un script pour renommer ces fichiers.
et les noms des fichiers comportent des espaces... donc sont de la forme que j'ai donné "toto\ titi"
Dernière modification par Goltia (Le 07/05/2007, à 23:02)
Hors ligne
#4 Le 07/05/2007, à 23:13
- Saito
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
Ah d'accord, donc il faut que tu entoures les noms des fichiers de "" :
i="titi toto"
# on teste le résultat
echo $i
Ainsi, mv "$i" tata renommera le fichier dénommé "titi toto" en tata
Dernière modification par Saito (Le 07/05/2007, à 23:45)
Aku-Soku-Zan_Shinsengumi
Hors ligne
#5 Le 07/05/2007, à 23:16
- Goltia
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
mouais mais le problème c'est que pour avoir mes noms de fichiers je fais un :
for i in *
....
Hors ligne
#6 Le 07/05/2007, à 23:45
- Saito
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
Goltia
et surtout c'est mv "$i" tata, car lorsque le shell va développer l'expression, de ta manière ou de la mienne, cela donnera mv titi toto tata => marche pas
C'est de là que venait ton problème, il faut quoter les variables pour éviter les problèmes d'espace et autres symboles réservés. Ainsi mv "$i" tata donnera mv "titi toto" tata et là c'est bon
J'ai répondu à côté dans le post précédent
Dernière modification par Saito (Le 07/05/2007, à 23:47)
Aku-Soku-Zan_Shinsengumi
Hors ligne
#7 Le 07/05/2007, à 23:50
- Goltia
Re : [résolu]mv recalcitrant avec les variables contenant des mots avec...
ok merci Saito ca marche.
Bonne nuit.
@+
Hors ligne