Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Перекодировка папок с файлами из windows1251 в utf-8 ???  (Прочитано 15024 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн yodis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
    • Продажа сетевого оборудования в Украине
Привнт ещо раз :) Короче есть цеоая програмулина в ней дофига папоки файлов, как её перекодировать в UBUNTU SERVER 9.04 или может кто для windows прогу знает, ато что то нерыть не могу. ))) Спасибо!!! :coolsmiley:
HP EliteBook Folio 9470m, Intel Core i5-3427U 1,8 ГГц, Intel HD Graphics 4000, SSD 180 ГБ, RAM 8 ГБ, UBUNTU 17.04 + GNOME 3

Оффлайн SureGOOD

  • Активист
  • *
  • Сообщений: 724
  • suregood.ru
    • Просмотр профиля
    • suregood.ru
Знаем
man iconv
Пожалуйста

Оффлайн yodis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
    • Продажа сетевого оборудования в Украине
Вижу

iconv -f encoding [-t encoding] [inputfile]...

Но не вижу как пройтись по всем папкам и файлам, тут походу по файлику отдельно. Или я ошибаюсь ???
HP EliteBook Folio 9470m, Intel Core i5-3427U 1,8 ГГц, Intel HD Graphics 4000, SSD 180 ГБ, RAM 8 ГБ, UBUNTU 17.04 + GNOME 3

Оффлайн Moskit

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Скопируй полностью содержимое скрипта в файл, например 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

Оффлайн Sam Stone

  • Старожил
  • *
  • Сообщений: 1129
    • Просмотр профиля
Для данного случая достаточно enconv имя_файла
Если файлов много и они в разных папках - ищем их через find
Jellyfish 5.19.0-43-generic

Оффлайн Moskit

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Похоже мы по разному поняли вопрос.
Автор уточни пожалуйста, что нужно перекодировать имена файлов или их содержимое?
ПС Для перекодировки содержимого, например текстовых, файлов достаточно перейти в каталог и
find ./ -type f -name \*txt -exec enconv {} \;Это как пример.
« Последнее редактирование: 07 Января 2010, 21:52:09 от Moskit »

Оффлайн xplicit

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
а для перекодировки имен файлов хорошо подходит convmv:

convmv -r -f cp1251 -t utf8 --notest directory

Оффлайн Moskit

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
а для перекодировки имен файлов хорошо подходит convmv:

convmv -r -f cp1251 -t utf8 --notest directory
Столкнулся я как то с проблемами при использовании convmv, не все имена перекодировал, а часть перекодировал неверно. С тех пор им не пользуюсь.

 

Страница сгенерирована за 0.051 секунд. Запросов: 23.