find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
Nota che devi specificare .*/
all'inizio perché find
corrisponde all'intero percorso.
Esempio:
[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
La mia versione di 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'.
Il -regex
find espressione corrisponde al nome intero , incluso il percorso relativo dalla directory corrente. Per find .
questo inizia sempre con ./
, quindi qualsiasi directory.
Inoltre, questi sono emacs
espressioni regolari, che hanno altre regole di escape rispetto alle solite espressioni regolari egrep.
Se questi sono tutti direttamente nella directory corrente, allora
find . -regex '\./[a-f0-9\-]\{36\}\.jpg'
dovrebbe funzionare. (Non ne sono proprio sicuro - non riesco a far funzionare la ripetizione contata qui.) Puoi passare alle espressioni egrep con -regextype posix-egrep
:
find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'
(Nota che tutto ciò che è stato detto qui è per GNU find, non so nulla di quello BSD che è anche quello predefinito su Mac.)
A giudicare da altre risposte, sembra che potrebbe essere colpa di find.
Tuttavia puoi farlo in questo modo:
find . * | grep -P "[a-f0-9\-]{36}\.jpg"
Potrebbe essere necessario modificare un po' il grep e utilizzare diverse opzioni a seconda di ciò che si desidera, ma funziona.