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/"{}"' \;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With