The OpenNET Project / Index page

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

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

Вариант 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 , Источник: http://www.opennet.dev/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:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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