find -regex for several extensions
I’m trying to cleanup some files on a Debian 11 machine.
These files live in a subdirectory in:
/tmp/.debrief
, or/opt/site/var/debrief
I can identify them by the extension in their filename:
.debsess
,.slmcrec
,.div
, or.debmeta
I thought using GNU findutil’s -regex
flag and the -delete
flag would be perfect:
find /tmp/.debrief /opt/site/var/debrief \
-regex '.*\.(?:div|debmeta|slmcrec|debsess)' \
-delete
But it doesn’t seem to match any of the files I see. Then I realized find
doesn’t directly implement pcre
:
$ find -regextype help
valid types are ‘findutils-default’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’,
‘awk’, ‘posix-basic’, ‘posix-egrep’, ‘egrep’, ‘posix-extended’,
‘posix-minimal-basic’, ‘sed’.
I’m pretty sure GNU grep
doesn’t implement capture groups without -E
, but egrep
does:
$ ls /tmp/.debrief | egrep '.*\.(div|debmeta|slmcrec|debsess)'
1R_camera.div
1R.debmeta
4Ahi_camera.div
4Ahi.debmeta
...
But find
still doesn’t seem to match those files:
$ find /tmp/.debrief /opt/site/var/debrief \
-regextype egrep \
-regex '.*\.(div|debmeta|slmcrec|debsess)'
--no output--
My find
version is find (GNU findutils) 4.8.0
.
What am I missing?
Read more here: Source link