Je voudrais rechercher des fichiers qui ne correspondraient pas à 2 -name
conditions. Je peux le faire comme ça:
find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk"
et cela donnera un résultat correct, mais puis-je joindre ces 2 conditions avec OU d'une manière ou d'une autre?
-regex
c'est moins portable que-name
.Oui, vous pouvez:
Explication de la spécification POSIX :
Notez que les parenthèses ouvrantes et fermantes sont précédées d'une barre oblique inverse (
\
) pour empêcher l'évaluation par le shell.la source
-exec
ou effectuez toute autre action sur lesfind
résultats, n'oubliez pas de mettre entre parenthèses\( \)
l'ensemble des critères, sinon cela-exec
ne s'appliquera qu'au dernier-or
critère. Pour travailler sur chacun d'entre eux, les parenthese:find \( <criterion> -o <criterion> \) -exec <command>
Vous étiez proche de la solution:
Vous pouvez combiner les opérateurs logiques suivants dans n’importe quelle séquence:
la source
Vous pouvez utiliser des expressions régulières comme dans:
La barre oblique inverse est le caractère d'échappement;
.
correspond à un seul caractère et*
sert à faire correspondre le caractère précédent à zéro ou plusieurs fois,.*
signifie donc correspondre à zéro ou plusieurs caractères.la source