Bash Pattern Matching Syntax

Drew Tomlinson drew at
Mon Oct 17 14:40:03 PDT 2005

On 10/15/2005 4:07 PM Will Maier wrote:

>On Sat, Oct 15, 2005 at 03:37:11PM -0700, Drew Tomlinson wrote:
>>I want to list the files in a directory that end in ".jpg"
>>irregardless of case.  Thus after reading the bash man page, it
>>seems I should be able to issue a command something along the
>>lines of "ls [*.[JjPpGg]]"  or "ls *.[JjPpGg]" but neither of
>>these work and return a "No such file or directory" message.  I've
>>also tried various ways of  escaping the '*' and '." but that
>>didn't help either.  However "ls *[JjPpGg]" does work by listing
>>the files.  However I want to match the "." before "jpg" as well.
>>What is the correct syntax for what I'm trying to do?
>The square brackets define a range of characters; [a-z] includes all
>lowercase alphabetic characters between 'a' and 'z' and will match
>_only one character from that range_ in a given string.
>    [a-z] matches 'b'
>    [a-z] matches 'z'
>    [a-z] doesn't match 'all'
>    [a-z] doesn't match '1'
>Your first attempt, [*.[JjPpGg]], has an extra pair of brackets.
>Secondly, it (like your second attempt) defines a range that would
>match only one character, JjPpGg:
>    [JjPpGg] matches 'j'
>    [JjPpGg] matches 'G'
>    [JjPpGg] doesn't match 'JPG'
>    [JjPpGg] doesn't match 'jpg'
>You need to break your patterns up; what you're looking for is a
>pattern of three characters, with 'J' or 'j' in the first position,
>'P' or 'p' in the second, and 'G' or 'g' in the third. That entire
>pattern should be prepended by a string of any characters (*) and a
>period (.).
>Here are some examples to demonstrate what I've written above; they
>conclude with a pattern that will match the files you're looking
>    sh-3.00$ ls
>    a  all  test.JPG  test.jpg
>    sh-3.00$ ls [a-z]
>    a
>    sh-3.00$ ls [all]
>    a
>    sh-3.00$ ls *.[JjPpGg]
>    ls: *.[JjPpGg]: No such file or directory
>    sh-3.00$ ls *.[Jj][Pp][Gg]
>    test.JPG  test.jpg

Thank you very much for your explanation.  Now I understand my error.  :)


Visit The Alchemist's Warehouse
Magic Tricks, DVDs, Videos, Books, & More!

More information about the freebsd-questions mailing list