• [^] # Re: * est un caractère spécial

    Posté par . En réponse au message Commande find et déspécialisation. Évalué à 4.

    Pour compléter la réponse de Marco : les jokers sont interprétés par le shell. Il remplace l'expression par les fichiers qu'il trouve PUIS exécute la commande.
    Exemples :

    find . -name toto.jpg --> le shell exécute la commande find . -name toto.jpg (aucun changement)
    find . -name t*.jpg --> le shell exécute la commande find . -name toto.jpg titi.jpg tutu.jpg (ce qui est une erreur de syntaxe)
    find . -name 't*.jpg' --> find . -name t*.jpg (les guillemets sont supprimés. C'est le shell qui les supprimer toujours)

    Tu peux le mettre en évidence avec la commande echo :

    echo * --> le shell exécute la commande echo fichier.txt truc.bin chose.xls (au final ça affiche la liste des fichiers)

    Pour que l'étoile soit transmise comme argument il faut l'échapper avec \* ou entre guillemets (simples ou doubles en Bash).

    echo "*" --> le shell exécute la commande echo * (et donc affiche une étoile)

    La commande find a la particularité d'interpréter les jokers (donc *.jpg va afficher tous les fichiers avec extention jpg), mais la plupart des commandes qui reçoivent un joker le considère comme un caractère normal.

    Sous MS-DOS le shell n'a pas « conscience » des jokers, ils sont donc passés directement aux commandes qui doivent les gérer.