The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Как переименовать имена файлов из одной кодировки в другую
Если не переименовывать каталоги:

Вариант 1:
   find | sort -r | while read f; do
     fn=$(basename "$f"|iconv -f koi8-r -t windows-1251);
     [ "$fn" = "$(basename "$f")" ] || mv "$f" "$(dirname "$f")/$fn";
   done 

Вариант 2:

   #!/bin/sh
   # аргумент 1 - путь
   # аргумент 2 - из какой кодировки
   # аргумент 3 - в какую кодировку 
   find $1 -regex "$1/.*" | sort -r | while read f; do
      fb=$(basename "$f");
      fd=$(dirname "$f");
      nfb=$(echo "$fb"|iconv -f $2 -t $3);
      [ "$fb" = "$nfb" ] || (mv "$fd/$fb" "$fd/$nfb"; echo "$fd $fb -> $nfb";)
   done

Вариант 3:

   Использовать готовую программу для переименования с изменением кодировки http://j3e.de/linux/convmv/
 
27.04.2005 , Источник: https://www.opennet.ru/openforum/vsl...
Ключи: file, charset, decode, rename / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Файлы, копирование, архивация



Обсуждение [ RSS ]
 
  • 1.1, baby11, 08:51, 28/04/2005 [ответить] [смотреть все]    [к модератору]
  • +/
    Использовать утилиту convmv, делает все что нужно
     
  • 1.2, Dmitry Pupkov, 14:32, 03/05/2005 [ответить] [смотреть все]    [к модератору]
  • +/
    А если нужно перекодировать rus -> translit?
     
     
  • 2.4, Peter, 14:53, 16/05/2005 [^] [ответить] [смотреть все]    [к модератору]
  • +/
    >А если нужно перекодировать rus -> translit?
    ну видимо надо пользоваться фичей кодировки КОИ: сначала в КОИ, а потом в latin1?


     
  • 1.3, sg, 17:09, 13/05/2005 [ответить] [смотреть все]     [к модератору]
  • +/
    bin sh Script for file name charset conversion It includes options fo... весь текст скрыт [показать]
     
  • 1.5, igor chubin, 14:13, 09/06/2005 [ответить] [смотреть все]    [к модератору]  
  • +/
    Вот так вот надо переименовывать:


    find . -depth -exec sh -c 'a={}; mv {} ${a%/*}/'echo ${a##*/}|tr "[[:upper:]]" "[[:lower:]]"'' \;


    Одной командой и сразу всё дерево.
    Я здесь для примера написал как регистр менять.
    Если кодировку, то просто ставите вместо tr, iconv
    или recode, konwert


    К вопросу о транслитерации.
    Можете попробовать заменять так:

    $ konwert UTF8-ascii/rosyjski
    русский текст
    russkij tiekst

    Но результат получается с польским акцентом :-)

     
     
  • 2.9, Саша, 01:44, 27/02/2008 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Пожалуйста, напишите по-подробнее про перекодировку всех папок в дереве..
     
  • 1.6, Виталий, 01:39, 30/07/2006 [ответить] [смотреть все]    [к модератору]  
  • +/
    Во втором скрипте надо писать:
    find "$1" "*"

    и далее по тексту

     
  • 1.7, Murz, 11:51, 17/01/2007 [ответить] [смотреть все]    [к модератору]  
  • +/
    Что-то этот скрипт файло всё правильно переименовывает, а вот вложенные папки почему-то пропускает. А в остальном скрипт супер!
     
     
  • 2.8, manson, 12:59, 17/01/2007 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    >Что-то этот скрипт файло всё правильно переименовывает, а вот вложенные папки почему-то
    >пропускает. А в остальном скрипт супер!

    Строчку
    find "$newname" -type d -execdir sh -c '\
    Заменить на
    find "$newname" -depth -type d -execdir sh -c '\

     
  • 1.10, Юзверь_Мастдайный, 12:37, 26/08/2010 [ответить] [смотреть все]    [к модератору]  
  • +/
    А под виндовс никак низзя че-нить придумать?
    получил тар архифф файлов с убунты - все файлы utf-8, вынь ессно utf-8 нихт ферштейн... :(
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor