find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
Beachten Sie, dass Sie .*/
angeben müssen am Anfang, weil find
entspricht dem gesamten Pfad.
Beispiel:
[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
Meine Version von 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'.
Die -regex
Suchausdruck stimmt mit dem vollständigen Namen überein , einschließlich des relativen Pfads aus dem aktuellen Verzeichnis. Für find .
diese beginnt immer mit ./
, dann beliebige Verzeichnisse.
Außerdem sind dies emacs
reguläre Ausdrücke, die andere Escape-Regeln haben als die üblichen egrep regulären Ausdrücke.
Wenn diese alle direkt im aktuellen Verzeichnis liegen, dann
find . -regex '\./[a-f0-9\-]\{36\}\.jpg'
sollte arbeiten. (Ich bin mir nicht wirklich sicher - ich kann die gezählten Wiederholungen hier nicht zum Laufen bringen.) Sie können mit -regextype posix-egrep
zu egrep-Ausdrücken wechseln :
find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'
(Beachten Sie, dass alles, was hier gesagt wird, für GNU find gilt, ich weiß nichts über BSD, das auch der Standard auf dem Mac ist.)
Nach anderen Antworten zu urteilen, scheint dies die Schuld von find zu sein.
Sie können es stattdessen aber auch so machen:
find . * | grep -P "[a-f0-9\-]{36}\.jpg"
Möglicherweise müssen Sie das Grep ein wenig anpassen und verschiedene Optionen verwenden, je nachdem, was Sie möchten, aber es funktioniert.