bug-findutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #60540] enable extended shell patterns for -name and -iname tests


From: Ian Bruce
Subject: [bug #60540] enable extended shell patterns for -name and -iname tests
Date: Thu, 6 May 2021 19:33:24 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0

URL:
  <https://savannah.gnu.org/bugs/?60540>

                 Summary: enable extended shell patterns for -name and -iname
tests
                 Project: findutils
            Submitted by: ian_bruce
            Submitted on: Thu 06 May 2021 11:33:22 PM UTC
                Category: find
                Severity: 3 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: None
         Discussion Lock: Any
           Fixed Release: None

    _______________________________________________________

Details:

The find(1) manual page states that for the "-name" test, "filename matching
is performed with the use of the fnmatch(3) library function."

Referring to the manual page for that function, the following flag is
specified:

    FNM_EXTMATCH

    If this flag (a GNU extension) is set, extended patterns are supported, as
introduced by 'ksh' and now supported by other shells. The extended format is
as follows, with pattern-list being a '|' separated list of patterns.

    '@(pattern-list)'

    The pattern matches if exactly one occurrence of any of the patterns in
the pattern-list match the input string. 

    ...

However, it does not appear that this flag has been enabled for find(1) :

    $ ls
    videofile.avi  videofile.mkv  videofile.mp4  videofile.wmv

    $ ls *.@(mp4|avi)
    videofile.avi  videofile.mp4

    $ find . -name '*.@(mp4|avi)'
    [nothing found]

Please add this flag to the fnmatch() call, so that find(1) can produce the
same matches as the shell would. Presumably, no other code changes would be
required. Obviously, this flag should also be enabled for the "-iname" test.

If it is thought that enabling this functionality by default would be
undesirable for some reason, consider adding "-extname" and "-iextname" tests
which include it.

In any case, the find(1) manual page should be updated to explain whether or
not these extended shell patterns are supported.

Thank you.





    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?60540>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]