On 3/19/26 18:06, Gasan wrote:
Hi all

It seems that find command with regextype emacs or no regextype does not
support character classes in -regex option.

For example:

```
touch 123
find . -regex './12[[:digit:]]'
```

Findutils version 4.10.0

Indeed, while find-4.10.0 misses the file (because it does not understand 
character
classes yet), the find program built from Git works:

  $ touch 123
  $ ~/findutils-releases/fu-4.10.0/build/find/find . -regex './12[[:digit:]]'
  $ ~/findutils/find/find . -regex './12[[:digit:]]'
  ./123

This change comes from the recent change on the 'regex' gnulib module:

  efd5c380ff regex: match current Emacs behavior

The new behavior is documented in the Texinfo manual since commit facc27e1804b,
and also pushed to the web manual already:

  
https://www.gnu.org/software/findutils/manual/html_node/find_html/emacs-regular-expression-syntax.html

  [...] Character classes are supported; for example ‘[[:digit:]]’
  will match a single decimal digit.

I've added a NEWS entry for this change - see attached patch and pushed at:
  https://cgit.git.savannah.gnu.org/cgit/findutils.git/commit/?id=34929da684212

Thanks for reporting this.

Have a nice day,
Berny

From 34929da684212a176e64be26eb764dc2fc35080a Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <[email protected]>
Date: Thu, 19 Mar 2026 22:59:09 +0100
Subject: [PATCH] NEWS: add entry for recent -regex alignment with Emacs

* NEWS (Changes in find): Document that 'find -regex' now supports
character classes (since gnulib commit efd5c380ff).
---
 NEWS | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/NEWS b/NEWS
index aa99ccf3..5c87f00c 100644
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,11 @@ GNU findutils NEWS - User visible changes.      -*- outline -*- (allout)
   argument of the command to be run.  While POSIX allows this for -exec, this is
   deemed insecure as an attacker could influence which files could be found.
 
+  'find -regex' with the default or the 'emacs' regextype now aligns better with
+  Emacs behaviour, and therefore e.g. supports character classes:
+    $ touch 123 && find -regex './12[[:digit:]]'
+    ./123
+
   find now issues a warning when the punctuation operators '(', ')', '!' and ','
   are passed with a leading dash, e.g. '-!'.  Future releases will not accept
   that any more.  Accepting that was rather a bug "since the beginning".
-- 
2.53.0

Reply via email to