Converts File Names from One Encoding to Another
convmv is meant to help convert a directory tree and the contained
files or a whole file system into a different encoding. It just
converts the file names, not the content of the files. A special
feature of convmv is that it also takes care of symlinks and converts
the symlink target pointer in case the symlink target is converted.
All this comes in very handy when converting from old 8-bit locales to
UTF-8 locales. It is also possible to convert directories to UTF-8 that
are already partly UTF-8 encoded. convmv is able to detect if certain
files are UTF-8 encoded and skips them by default. To turn this
behavior off, use the --nosmart switch.
An interoperability issue that comes with UTF-8 locales is this: Linux
and (most?) other Unix-like operating systems use the normalization
form C (NFC) for UTF-8 encoding by default but do not enforce this.
Darwin, the base of Macintosh OSX, enforces normalization form D (NFD),
where a few characters are encoded in a different way. convmv is able
to convert files to NFC or NFD, which aids in interoperability with