384 votes

modèle « find - name » qui correspond à plusieurs modèles

J'ai essayé d'obtenir une liste de tous les python et des fichiers html dans un répertoire avec la commande find Documents -name "*.{py,html}".

Puis vint la page de man:

Des accolades à l'intérieur de la forme (‘{}') ne sont pas considérés comme spéciaux (c'est-à-trouver . -nom 'foo{1,2}' correspond à un fichier nommé foo{1,2}, et non pas les fichiers toto1 et foo2.

Comme c'est une partie d'un tuyau de la chaîne, je voudrais être en mesure de spécifier les extensions il correspond au moment de l'exécution (pas de coder en dur). Si trouver juste ne peut pas le faire, perl one-liner (ou similaire), ce serait bien.

Edit: La réponse j'ai finalement venu à inclure toutes sortes de conneries, et c'est un peu long, donc je l'ai posté comme une réponse à l'origine de démangeaisons que j'essayais de zéro. Hésitez pas à pirater que si vous avez de meilleures solutions.

542voto

RichieHindle Points 98544

Utilisation `` , qui signifie « ou » :

Edit: Désolé, viens de relire la question... vous auriez besoin construire cette ligne de commande par programme, qui n’est pas aussi simple que ça.

Vous utilisez bash (ou Cygwin sous Windows) ? Si vous êtes, vous devriez être capable de faire cela :

qui pourrait être plus facile construire par programme.

76voto

intelekt Points 356

Certaines éditions de trouver, surtout sur les systèmes linux, éventuellement sur d’autres aswell - regex et regextype - options de support technique, qui recherche les fichiers avec des noms correspondant à l’expression régulière.

par exemple

devrait faire l’affaire dans l’exemple ci-dessus. Toutefois, cela n’est pas une fonction de recherche standard POSIX et est mise en oeuvre dépendant.

Il s’agit de la seule solution, ce qui a fonctionné pour moi jusqu'à présent.

35voto

Stephan202 Points 27707

Vous pouvez ajouter par programmation plus clauses, séparés par :

Ou bien, aller d’une simple boucle à la place :

13voto

bkidd Points 51

J’ai eu un besoin similaire. Cela a fonctionné pour moi :

2voto

mnrl Points 145
<pre><code></code><p>simple, mais fonctionne  :)</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X