Le pattern-matching dans Bash

En faisant la mise à jour de Dotclear, via les patches, j'ai oublié de préciser qu'il fallait omettre le dossier parent. Je me suis donc retrouvé avec des fichier portant l'extension .rej.

assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do echo ${file}; done
./blogs.php.rej
./blog_theme.php.rej
./comment.php.rej
./categories.php.rej
./category.php.rej
./comments_actions.php.rej
./comments.php.rej
./blog_pref.php.rej

Pour retrouver leurs extensions d'origine (.php), une simple boucle suffit :

assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do mv ${file} ${file%.*}; done

Je ne suis pas certain que la « syntaxe » ${variable%.*} fonctionne avec tous les shells.