[K12OSN] OT: check case and format of filename
Nils Breunese
nils at breun.nl
Fri Sep 26 19:29:30 UTC 2008
Rob Owens wrote:
> Nils Breunese wrote:
>> Rob Owens wrote:
>>
>>> Since list has been kinda slow lately, I'll test your patience
>>> with one
>>> more scripting question. You guys have really helped me learn a
>>> lot in
>>> the past couple of days. I've been looking into bash parameter
>>> expansion, awk, and sed, but I'm not really sure I'm going in the
>>> right
>>> direction.
>>>
>>> I need to check a filename for a particular "format" or
>>> "convention".
>>> File names should look like this:
>>>
>>> AB12D89-S123--revA
>>> AB12D89-S123--revA--page1
>>>
>>> In other words:
>>>
>>> 1) They should be all uppercase and numeric before the '--'
There's also a dash before the '--'. That not uppercase or numeric...
I added dash to the allowed characters before '--' in the regular
expression below.
>>> 2) They must contain '--revX', where X is any uppercase letter, and
>>> 'rev' must be lowercase.
>>> 3) There is an optional --page# at the end, where # is any
>>> number, and
>>> 'page' must be lowercase.
>>>
>>> I can work out the logic of testing for compliance with my rules,
>>> but
>>> I'm not sure how to identify the case of each letter, nor how to
>>> split
>>> the filename up using '--' as the divider.
>>>
>>> Thanks for any advice you might have. By the way, this is to be
>>> part of
>>> a bash script (which is to be run on my K12LTSP box).
>>
>> Do you need a function that returns true or false depending on
>> whether a
>> string (filename) complies with the format or do you need something
>> that
>> returns all filenames in a directory that do or do not comply or
>> something? Did you already figure out that you're probably looking at
>> using regular expressions? http://www.regular-expressions.info/ has a
>> lot of info on regular expressions.
>>
> Yes, I've been learning about regular expressions. I appreciate the
> link. More stuff to read!
>
> I need to check one particular string for compliance with the
> format. I
> don't need to correct the format, I just need to inform the user
> that it
> is incorrect.
Without going to Python or Perl or something you could try this:
echo $filename | grep "^[A-Z0-9-]\+--rev[A-Z]\(--page[0-9]\+\)\?$"
and check the return value ($?, 0 for succes).
Nils Breunese.
More information about the K12OSN
mailing list