find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
Notez que vous devez spécifier .*/
au début car find
correspond à tout le chemin.
Exemple :
[email protected]:~/so$ find . -name "*.jpg"
./foo-111.jpg
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
[email protected]:~/so$
[email protected]:~/so$ find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
Ma version de find :
$ find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0)
[email protected]:~/so$
[email protected]:~/so$ find . -regextype foo -regex ".*/[a-f0-9\-]\{36\}\.jpg"
find: Unknown regular expression type `foo'; valid types are `findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.
Le -regex
trouver l'expression correspond au nom entier , y compris le chemin relatif depuis le répertoire courant. Pour find .
cela commence toujours par ./
, puis tous les répertoires.
De plus, ce sont emacs
expressions régulières, qui ont d'autres règles d'échappement que les expressions régulières egrep habituelles.
Si ceux-ci sont tous directement dans le répertoire courant, alors
find . -regex '\./[a-f0-9\-]\{36\}\.jpg'
devrait marcher. (Je ne suis pas vraiment sûr - je n'arrive pas à faire fonctionner la répétition comptée ici.) Vous pouvez passer aux expressions egrep par -regextype posix-egrep
:
find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'
(Notez que tout ce qui est dit ici est pour GNU find, je ne sais rien de celui de BSD qui est aussi celui par défaut sur Mac.)
À en juger par d'autres réponses, il semble que ce soit la faute de find.
Cependant, vous pouvez le faire de cette façon :
find . * | grep -P "[a-f0-9\-]{36}\.jpg"
Vous devrez peut-être modifier un peu le grep et utiliser différentes options en fonction de ce que vous voulez, mais cela fonctionne.