Pages : 1
#1 Le 17/12/2007, à 16:56
- executter_fr
renommer des fichiers
bonjour,
je débute en bash et j'aurais besoin d'un coup de pouce. je récupére une liste de fichier avec wget qui ont cette forme :
track00.111?blabla444_blabla555 (où 00 est un nombre qui s'incrémente et 111 et une extension qui change)
je voudrais "découper" à partir du point d'interrogation.
j'ai regardé du côté de rename mais j'ai rien bité, alors je suis parti sur un mv combiné avec un cut :
mv track* $(echo track* | cut -d"?" -f 1)
cela fonctionnait sur mes tests avec un fichier, mais avec plusieurs fichiers ça me renvoie "mv: la cible `track01' n'est pas un répertoire" ????
je suis perdu, est-ce normal ? comment faire cela proprement ?
#2 Le 17/12/2007, à 17:04
- Sciensous
Re : renommer des fichiers
en fait tu raisonne bien mais pas comme le shell
ce dernier considère track* comme une liste car interprété avant l'execution !!
et dans ce cas le mv dépace les fichiers dans un répertoire, d'o๠le message d'erreur.
un truc qui marche serait:
for i in `ls track*` ; do mv $i $(echo $i | cut -d"?" -f 1) ; done
enfin je ne suis pas un pro donc s'il y a erreur, à corriger
#3 Le 17/12/2007, à 17:21
- executter_fr
Re : renommer des fichiers
merci ça marche à la perfection ^^
cela paraà®t si simple une fois la solution sous les yeux
#4 Le 17/12/2007, à 18:50
- Alain.g
Re : renommer des fichiers
salut
ça serait plus simple avec rename (il n'y aurait notamment pas besoin de passer par une boucle for)
rename 's/\?.*//' track*
's/le/la/'
signifie : substitue "le" par "la"
's/\?.*//'
signifie : substitue le point d'interrogation et tout ce qui suit par rien
- le point d'interrogation est échappé avec \ afin qu'il ne soit pas interprété comme un métacaractère
- le point représente n'importe quel caractère, * pour la répétition
Sinon en le faisant avec mv, il n'y a pas besoin d'utiliser cut. On peut directement découper comme ceci : "${i%\?*}"
for i in track* ; do mv "$i" "${i%\?*}" ; done
Dernière modification par Alain.g (Le 17/12/2007, à 22:05)
Xubuntu Karmic !
Hors ligne
#5 Le 18/12/2007, à 10:09
- Sciensous
Re : renommer des fichiers
je te dis merci alain.g car tu simplifie ma ligne shell...
Et j'en profite pour te demander si tu as un lien de tuto complet et précis concernant les substituons de chaine ${chaine%...} car je n'ai trouvé que des morceaux par ci par là
Pages : 1