OK, I've tried to give you some sense of the file naming conventions which are reasonably strict as long as you appreciate that they will always start with a 2 or 3-letter or number group, then an underscore, then a 2 or 3 letter designator (typically but no hard and fast rule) then an underscore and some more letters and/or numbers and perhaps another underscore or hyphen and some more letters or numbers but this last part is not relevant to the project.
Well, therein lies the rub. "Reasonably strict" doesn't equate to "strict" so this will be very difficult to do automatically. However, read on.
So what we need to create is the following structure:
root (could be anywhere)
then the first grouping creates a major subdir named after it (in the examples shown FJ or MA)
then subdirs off those based on the next grouping
then subdirs off that based on third grouping
then all the files that fit that pattern into those dirs so only three levels deep
At its most basic, what you describe above is very easy to do. Cracking a filename on its underscores, creating folders, and moving said file into said folder is a piece of cake. However, since some of your files have three groups and others have four, this is much
more difficult to do accurately
. Do you understand what I mean?
For instance, your MA_* files mostly
have four groups (three that matter and then the irrelevant counter portion) but your FJ_* files mostly
have three groups (two that matter and then the irrelevant counter portion). Normally, I could take num_groups-1 and go with that but I can't, in this case, since there are example in your images where the MA_* files have three groups and the FJ_* files have four groups.
At this point, I don't feel comfortable writing a parser that goes three levels deep since there is no hard standard to the filenames. There are a few ways to approach this:
1) You strictly standarise your filenames at which point I can make the parser as creative as you would like.
2) You divvy up your files into groups that contains the same amount of "underscore groups" and then I can offer an option to crack the filenames on first, second, or third groups.
3) I write the app so you can form basic *? type of wildcard matching. Something like "MA_*_*.jpg" gets filtered to some destination folder you specify. One drawback here is that each match entry can only have one destination folder. Another drawback, I suppose, is that the entry will need to be entered manually. On the other hand, the list of entries is easily saved and reused. This is how I started writing this app before you mentioned your automatic-filename-cracking request.
I hope you appreciate that I need an automatic process because (currently) there are 21,128 filers (and growing) so any needed manual intervention makes it a very laborious process indeed!
Sure, I appreciate it but, from my point of the view as the coder who is messing with your files
, I have to feel confident that I'm not going to muck them up.
I forgot to ask you whether this process can be recursive because currently
Yes, recursive processing is easily doable.