

Using the -i option and omitting parenthesis we can shorten it down to only: ls | egrep -i 'jpe?g|gif$'
Unix grep usage free#
Feel free to remove them if they seem obfuscating.)įinally, I used ls and a pipeline to send all file names to (e)grep: ls | egrep '(?)|()$' (Here I've again added extra parenthesis for readability/grouping. Thus we simply get: ?$įinally lets assume you also want to find files with ".gif"-filetype, we can add this as a second parameter: (?)|()$ Also, since the file only has this pattern to end on, we can omit the starting and ending parenthesis.

Since there is only one optional letter ("E"), we can omit this one. (This could also be done using the "-i" option in grep, but I took this as an exercise in REGEX)įinally, since we (hopefully) start to see a pattern, we can omit the unnecessary parentheses. (Match any file ending with at pattern like: "j" or "J", followed by "p" or "P", followed by an optional "e" or "E", followed by "g" or "G") To this we introduce the character-class "". However we might also like to match files with lowercase letters in file name. (Mach any file ending with a pattern like: "J", followed by "P", followed by an optional "E", followed by a "G"). To this we can use the "?" operand (meaning optional). However we see that in this example, the only difference is the optional "E". (Match any line ending with EITHER "JPEG" or "JPG") To this we use the pipeline "|" as an or operand. We know that the pattern needs to be either JPEG or JPG. Ergo we use the "$" operand to define that each line has to end with the defined pattern. We know that we are looking for the end of the name. (Match anything one or more times followed by either "JPG" or "JPEG" at the end)Įxtended answer (editted after learning a bit about (e)grep):Īssuming you have a folder with following files in them: test.jpeg, test.JpEg, test.JPEG, test.jpg, test.JPG, test.notimagefile, test.gifįirst we start by defining what we know about our pattern: The following REGEX should get you going somewhere.+((JPG)$|(JPEG)$) The pipe-operator "|" is used for an OR operator. I'm also fairly new to regex, but since noone else has answered I'll give it a shot.
