446 votes

Comment utiliser les regex avec commande find ?

J’ai quelques images nommées avec chaîne uuid1 généré. Pour l’exemple 81397018-b84a-11e0-9d2a-001b77dc0bed.jpg. Je veux savoir toutes ces images en utilisant la commande « find » :

Mais il ne fonctionne pas. Quelque chose de mal avec le regex ? Quelqu'un pourrait-il m’aider avec cela ?

495voto

Susam Pal Points 6171
<pre><code></code><p><code></code><code></code>correspond à l’ensemble du chemin.</p><p>Exemple :</p><pre><code></code></pre><p>Ma version de trouver :</p><pre><code></code></pre></pre>

133voto

Paŭlo Ebermann Points 35526

L' -regex trouver l'expression correspond à l' ensemble du nom, y compris le chemin relatif à partir du répertoire courant. Pour find . cela commence toujours avec ./, puis tous les répertoires.

Aussi, ce sont des emacs d'expressions régulières, qui ont d'autres échapper à des règles que l'habitude egrep des expressions régulières.

Si elles sont toutes directement dans le répertoire courant, puis

find . -regex '\./[a-f0-9\-]\{36\}\.jpg'

devrait fonctionner. (Je ne suis pas vraiment sûr - je ne peux pas obtenir le compte de la répétition à l'œuvre ici.) Vous pouvez passer à egrep expressions en -regextype posix-egrep:

find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'

58voto

yarian Points 1396

À en juger par les autres réponses, il semble que cela pourrait être la faute de find.

Toutefois vous pouvez le faire ce chemin au lieu de cela :

``

Vous devrez peut-être ajuster le grep un peu et d’utiliser différentes options en fonction de ce que vous voulez, mais ça marche.

16voto

thiton Points 21303

Essayez d’utiliser des guillemets simples (') pour éviter la coquille s’échappant de votre chaîne. N’oubliez pas que l’expression doit correspondre à l’ensemble du chemin, à savoir doit ressembler à :

En outre, il semble que ma trouvaille (GNU 4.4.2) ne connaît que les expressions rationnelles simples, surtout pas la syntaxe {36}. Je pense que vous aurez à faire faire sans lui.

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