我试图使用以下脚本更改文件名:
find dir/-type f -exec mv {} $(echo {} | iconv -f UTF8 -t ASCII // TRANSLIT)\;
为什么不起作用?我的意思是当我有一个像'''这样的字符的文件时,它应该将它转换为'a'.
$ echo ????ó | iconv -f UTF8 -t ASCII//TRANSLIT
azzco
Run Code Online (Sandbox Code Playgroud)
为什么它在find -exec中不起作用?
$ find dir/ -type f -exec mv {} $(echo {} | iconv -f UTF8 -t ASCII//TRANSLIT ) \;
mv: `dir/zi?' and `dir/zi?' are the same file
Run Code Online (Sandbox Code Playgroud)
我使用xargs获得相同的结果:
$ find dir/ -type f | xargs -I{} echo {} | iconv -f UTF8 -t ASCII//TRANSLIT
dir/zia
Run Code Online (Sandbox Code Playgroud)
但:
$ find dir/ -type f …
Run Code Online (Sandbox Code Playgroud)