#!/bin/bash
# badname.sh

# Efface les fichiers du répertoire courant contenant des mauvais caractères.

for nomfichier in *
do
  mauvaisnom=`echo "$nomfichier" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p`
# mauvaisnom=`echo "$nomfichier" | sed -n '/[+{;"\=?~()&lt;&gt;&*|$]/p'`  fonctionne aussi.
#  Supprime les fichiers contenant les "mauvais" caractères :
#+   + { ; " \ = ? ~ ( ) < > & * | $
#
  rm $mauvaisnom 2>/dev/null
#                ^^^^^^^^^^^ Supression des messages d'erreur.
done

# Maintenant, faire attention aux noms de fichiers contenant des espaces blancs.
find . -name "* *" -exec rm -f {} \;
# Le chemin du fichier trouvé par _find_ remplace "{}".
#  Le '\' nous assure que le ';' est interprété littéralement, c'est-à-dire comme une fin
#+ de commande.

exit 0

#---------------------------------------------------------------------
# Les commandes ci-dessous ne seront pas exécutées à cause de la commande
# _exit_ au dessus.

# Voici une alternative au script ci-dessus:
find . -name '*[+{;"\\=?~()&lt;&gt;&*|$ ]*' -maxdepth 0 \
-exec rm -f '{}' \;
#  L'option "-maxdepth 0" nous assure que _find_ ne cherchera pas dans les
#+ sous-répertoires de $PWD.

# (Merci, S.C.)
