[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [K12OSN] OT: check case and format of filename

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

I need to check a filename for a particular "format" or "convention".
File names should look like this:


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.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]