Я попытался изменить имена файлов, используя следующий скрипт:Изменить имена файлов с находкой и Iconv
найти реж/-типа е -exec мв {} $ (эхо {} | Iconv -f -t UTF8 ASCII// TRANSLIT) \;
Почему это не работает? Я имею в виду, когда у меня есть файл с символом типа '±', он должен преобразовать его в 'a'.
$ echo ążźćó | iconv -f UTF8 -t ASCII//TRANSLIT
azzco
Почему это не работает в 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
я получаю тот же результат с помощью xargs:
$ find dir/ -type f | xargs -I{} echo {} | iconv -f UTF8 -t ASCII//TRANSLIT
dir/zia
но:
$ find dir/ -type f | xargs -I{} mv {} $(echo {} | iconv -f UTF8 -t ASCII//TRANSLIT)
mv: `dir/zią' and `dir/zią' are the same file
это именно то, чего мне не хватало. Большое спасибо! – wisent
$ (iconv -f UTF8 -t ASCII // TRANSLIT <<< $ 1) - остерегайтесь $ 1 здесь не цитируется, и несколько пробелов будут разделены! ех. "{пробел} {пробел} b" станет "{пробелом} b". чтобы обойти это, вы можете использовать echo -n с трубой вместо herestring – user2847643