This is a bit late this. I had similar problems, looked for an answer, and couldn't find one.
So I wrote a script that will do it as follows:
Given an alias directory, and a "target files" directory:
- Test files names for a trailing "alias" and test files to see if they are symbolic links.
- If so, search for filenames in the target directory tree matching the root of the alias or link name
- If found: replace the broken alias or link with a new symbolic link.
That works for me but it's not a very nice solution:
1) It doesn't use a good test for aliases, which is slightly dangerous but not very: It'll fail in the unlikely case a files which is not an alias finishes with " alias", or if an alias has had the trailing " alias" removed.
2) It doesn't check for multiple file matches, and will link to the first it finds. (or link to all of them in turn, over-writing, I can't remember).
3) most importantly: It removes all aliases and replaces them with symbolic links which isn't great. Aliases supposedly have greater flexibility than links which explains why they are ten times the size.
Links are enough for me - I'm just posting this as an indication of what can be done, without including my inelegant script.
Finally, a good place to look to learn how to do a better job is this person I came across:
http://sveinbjorn.org/osxutils_docs
This Sveinbjorn has shared this utility "mkalias" which shows how to make aliases.
From there, it's probably not hard to make a proper applescript "alias" test in place of my stupid filenamename method, and test separately for aliases and links to avoid the "all links" problem.
And finally a little test for multiple matches when searching for the target would be nice.
Good luck.
I myself will probably stick to links, too lazy.