Bash Pattern Matching Syntax
drew at mykitchentable.net
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
>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]
> sh-3.00$ ls [all]
> 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