Скопируй полностью содержимое скрипта в файл, например convert_filename.sh
Присвой право исполнения chmod +x convert_filename.sh
Зайди в каталог в котором ты собираешься произвести конвертацию и запусти скрипт ./convert_filename.sh cp1251
это если файл скрипта у тебя находится в том же каталоге. Иначе путь_к_скрипту/convert_filename.sh cp1251
ВНИМАНИЕ!
Предварительно скопировать ВСЕ данные из каталога куда-нибудь по дальше!
В каталоге не должно быть нормально читаемых кириллических имён они в этом случае перекодируются в крякозябры!
Скрипт писался на скорую руку и не проверялся на правильность работы. Никаких гарантий, что сработает с первого раза!
Ещё раз напоминаю. Скопируйте весь каталог, например на флешку и уже на ней конвертируйте.
Если всё отработает нормально уже с флешки можете перекинуть куда надо.
#!bin/bash
#Конвертация имён файлов и каталогов из заданной кодировки в текущую
if [ "$1" = ""]
then echo "Исходная кодировка не указана! Пожалуйста укажите кодировку, например cp1251 или koi8-r"; exit 1
fi
PWD=$(pwd) #Запоминаем текущий каталог
#Ищем все вложенные каталоги в текущем и отдаём их переменной цикла и временно заменяем пробелы в названиях на \ для исключения проблем с восприятием одного имени файла как нескольких.
for i in $(find $PWD -type d -depth | sed 's/ /\\/g')
do
#Возвращяем пробелы в имена файлов и каталогов и запоминаем в переменной dest
dest=$(echo "$i" | sed 's/\\/ /g')
cd "$dest" #Переходим в каталог
#Конвертируем имена содержимого катаога из заданной кодировки в текущую
for n in *
do
conv=$(echo "$n" | iconv -c -f "$1")
mv "$n" "$conv"
done
cd $PWD
done