[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] Changer les extensions...



cd /mon/rep/a/la/con/plein/php
for i in *.php ; do
	base=`basename $i .php`
	mv $i $base.php4
done
Il y a une petite astuce dans bash qui rend la chose plus
performante (basename n'est pas un builtin, donc a chaque
tour de boucle, il éxécute un sous-processus pour basename):

for i in *.php; do
   base=${i%%.php}
   mv "$i" "${base}.php"
done

Le truc est ${i%%.php}: %% signifie "retire à la fin"
Cela permet de retirer l'extension (ou n'importe quelle chaîne)
à la fin d'une variable.

Voici p.ex. comment convertir tous ses fichiers gif en png,
à l'aide de convert:

for f in *.gif; do
   convert "$f" "${f%%.gif}.png"
done

PS: on a intérêt à mettre les variables contenant les noms de
    fichiers entre "" car si ils contiennt un blanc et qu'on ne les
    met pas entre "", ce seront 2 paramètres distincts à la commande

De manière semplable, la construction suivante est très pratique aussi:

${f##*/}

## signifie "retire au début"

Donc si
x=/foo/bar/spam/eggs
${x##*/} aura la valeur: eggs

Toute la puissance de la ligne de commande UNIX ;-)

--
  -o) Pascal Bleser   ATOS Origin/Aachen(DE) |
  /\\         <pascal.bleser@atosorigin.com> |
 _\_v <guru@linuxbe.org>                     |
---------------------------------------------|
Jesus saves,Buddha makes incremental backups :
---------------------------------------------'


_______________________________________________
Linux Mailing List
LCP - 11 Mai - http://www.unixtech.be/lcp.php
Archives: http://www.unixtech.be/mailman/listinfo/linux