Re: Bash Pattern Matching Syntax

2005-10-23 Thread Michał Masłowski
 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?

 Thanks,

 Drew

ls *.{JPG,jpg}
or
ls *.{J,j}{P,p}{G,g}
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: Bash Pattern Matching Syntax

2005-10-17 Thread Drew Tomlinson

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
for.

   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.  :)

Drew

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

http://www.alchemistswarehouse.com

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Bash Pattern Matching Syntax

2005-10-15 Thread Drew Tomlinson
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?


Thanks,

Drew

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

http://www.alchemistswarehouse.com

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: Bash Pattern Matching Syntax

2005-10-15 Thread Will Maier
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
for.

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

-- 

o--{ Will Maier }--o
| jabber:[EMAIL PROTECTED] | email:[EMAIL PROTECTED] |
| [EMAIL PROTECTED] | [EMAIL PROTECTED] |
*--[ BSD Unix: Live Free or Die ]--*

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]