[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