(Ubuntu / Linux) La commande "find" donne différents résultats basés sur des guillemets

J'utilisais

find -iname *prib* 

Et obtenant un seul résultat "./prib09jack.pdf" avec

 find -iname "*prib*" 

Je reçois beaucoup plus de résultats que je cherchais, comme

 ./Dir1/PRIB09/prib09jackTFF1.pdf 

Et beaucoup d'autres, mais pourquoi importait-il que les guillemets étaient autour de " prib "?

Meilleur.

S'il y a un fichier (ou des fichiers) correspondant à *prib* dans le répertoire actuel lorsque la commande find est exécutée, le shell va étendre le caractère générique pour correspondre aux noms de fichier avant de remettre les arguments à trouver et entraîner une Différentes commandes exécutées que l'utilisateur attend.

Par exemple,

 $ ls foo* foobar $ find -iname foo* ./foobar $ find -iname "foo*" ./foobar ./dir/foobz ./dir2/fooblat 

En bref, Quotes supprime l'interprétation de caractères génériques pour la commande de recherche à exécuter. Le manque de devis se développe immédiatement.

Le problème est que votre coque développe les caractères génériques * avant de les remettre à trouver. Vous voulez trouver les obtenir, alors vous devez les échapper. Les citations le font, ou vous pourriez faire

find -iname \*iprib\*

Et cela fonctionnerait aussi. La clé est que vous voulez que les caractères génériques puissent se révéler ininterrompus par toute autre chose en chemin (comme votre coquille).