Je souhaite rechercher tous les fichiers dont le chemin contient plusieurs mots (word1
, word2
), sans ordre particulier entre eux.
Exemples de fichiers correspondants :
word1bar/fooword2/myfile
fooword2/word1bar/myfile
fooword2/bar/word1myfile
Quelle commande peut résoudre la tâche ?
Je suppose qu'une commande comme celle-ci fonctionnera :
find . -regex regexpattern
Merci.
Ma solution avec locate
is Améliorez la recherche de fichiers par noms de chemin avec le pipeline locate et grep
Réponse acceptée :
C'est difficile à faire avec un seul motif (regex ou shell), mais depuis find
peut prendre plusieurs conditions, nous pouvons utiliser
find . -type f -path "*word1*" -path "*word2*" ...
Dans regex, vous devez spécifier toutes les différentes permutations des mots, comme .*word1.*word2.*|.*word2.*word1.*
(ERE ou Perl RE uniquement), et cela explose rapidement si vous avez plus de deux mots à rechercher.