2017-07-18 3 views
0

-ou et exec Si j'exécutetrouver avec dysfonctionnement

find . -name "*FOO*" -or -name "*foo*" 

Il fonctionne parfaitement, le retour 106 fichiers avec le FOO majuscules et 4 fichiers avec le foo minuscule.

Si j'ajoute l'exécutif ls cette syntaxe

find . -name "*FOO*" -or -name "*foo*" -exec ls -ld {} \; 

il retourne seulement 4 avec le minuscule foo

Si j'exécute exactement la même commande sur un hôte réel Unix, il renvoie à la fois le haut et le bas, exactement comme je m'y attendais.

Répondre

2

Il est juste priorité de l'opérateur - essayez:

find . \(-name "*FOO*" -or -name "*foo*" \) -exec ls -ld {} \; 
+0

Merci pour votre réponse. Intéressant qu'il fonctionne différemment sur OSX vs Unix. Quand je rentre à la maison, je vais l'essayer sur Linux. – JimR

+0

Parfois, il existe des différences entre les systèmes d'exploitation BSD et non BSD, mais je suppose que vous pouvez avoir un système de fichiers insensible à la casse (mais conservant la casse) dans un cas, par exemple. OS X HFS +. Quoi qu'il en soit, si vous respectez les règles habituelles de la priorité des opérateurs, cela devrait fonctionner de la même manière partout. –