Бывает так, что на диске по каким-то причинам файлы и каталоги хранятся не в той кодировке, в которой хотелось бы, 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
Комментариев нет:
Отправить комментарий