Бывает так, что на диске по каким-то причинам файлы и каталоги хранятся не в той кодировке, в которой хотелось бы, sh скрипт, приведенный ниже решает эту проблему.
Чтобы определить из какой кодировки и в какую кодировать можно воспользоваться онлайн сервисом http://www.online-decoder.com/ru или ему подобными.
Чтобы определить из какой кодировки и в какую кодировать можно воспользоваться онлайн сервисом http://www.online-decoder.com/ru или ему подобными.
#!/bin/sh # Чтобы определить из какой кодировки в какую # кодировать можно воспользоваться онлайн подобным # сервисом http://www.online-decoder.com/ru DIR_PATH='/mnt/volume1/' # Каталог для обработки F_CODE='cp1251' # В какой кодировке хранятся имена файлов T_CODE='koi8-r' # В какую кодировку перекодировать имена файлов # ищем сперва самые "глубокие Директории" find -d $DIR_PATH -type d | while read dir; do if [ -e "$dir" ]; then # Если такая директория существует, то... D_OUT="$(echo "$dir" | iconv -f $F_CODE -t $T_CODE)" # ВАЖНО Сперва получаем список файлов в самой глубокой директории # (ВАЖНО, чтобы она была самой "глубокой") ls "$dir" | while read file; do F_OUT="$(echo "$file" | iconv -f $F_CODE -t $T_CODE)" # Если имена файлов не равны, то переименовываем их if [ "$dir" != "$D_OUT" ]; then echo "$dir/$file" '->' "$dir/$F_OUT"; mv "$dir/$file" "$dir/$F_OUT"; fi done # Если имена каталогов НЕ равны, то можем со # спокойной совестью перекодировать каталоги if [ "$dir" != "$D_OUT" ]; then echo "$dir" '->' "$D_OUT"; mv "$dir" "$D_OUT"; echo '------------------------' fi fi done
Комментариев нет:
Отправить комментарий