I usually run tests on one of my own machines, but in this case, most what follows is guesswork . . .
No, I have no idea characters are allowable in either filesystem; and you are right that it is an essential element of your project. I think you need to do 4 things:
- Determine your source character set.
- Determine your destination character set.
- Decide a mapping of items in 1) that are not allowed in 2).
- Change the affected file names accordingly.
Determine your source character set
It should be possible to script a loop through whatever characters you want to test & see if/how they fail. Here is some concept code for the entire 7-bit ASCII set:
Code:
mkdir ASCII
cd ASCII
for X in {0,1}{0..7}{0..7}
do
y=$(echo -e "\\${X}")
echo -en "$X $y "
touch $y; ls $y
done | less
Warning: It's messy.
Another approach to finding your source character set is to look in the directories you will be working w/ -- here I assume it's /home/<you>"
Code:
ls -R ~ \
| grep -v "^/.*:$" \
| grep -o . \
| LC_ALL=C sort -u \
| less
Not so messy, but not as complete.
Determine your destination character set
Test 1) on the dest. file sys.; perhaps w/ a .bat or .cmd file that is generated by a script.
Decide a mapping of items in 1) that are not allowed in 2)
This one is up to you -- you might map lower case to upper, spaces to underscores, all punctuation to periods, etc., etc., etc.
Change the affected file names accordingly
Use
tr, RT

M, here's a lower to upper sample:
Code:
for X in *; do mv $X $(echo $X |tr a-z A-Z); done