I'm having this one PHP project on my OSX which is in latin1 -encoding. Now I need to convert files to UTF8. I'm not much a shell coder and I tried something I found from internet:
mkdir new
for a in `ls -R *`; do iconv -f iso-8859-1 -t utf-8 <"$a" >new/"$a" ; done
But that does not create the directory structure and it gives me heck load of errors when run. Can anyone come up with neat solution?
You shouldn't use ls
like that and a for
loop is not appropriate either. Also, the destination directory should be outside the source directory.
mkdir /path/to/destination
find . -type f -exec iconv -f iso-8859-1 -t utf-8 "{}" -o /path/to/destination/"{}" \;
No need for a loop. The -type f
option includes files and excludes directories.
Edit:
The OS X version of iconv
doesn't have the -o
option. Try this:
find . -type f -exec bash -c 'iconv -f iso-8859-1 -t utf-8 "{}" > /path/to/destination/"{}"' \;