Страница 1 из 2

FileRenamer

Добавлено: 11 дек 2019, 10:16
pv13
Подскажите,пожалуйста,как переименовать с транслита на русский имена файлов. Если можно,пошагово. Спасибо.

FileRenamer

Добавлено: 11 дек 2019, 10:20
rogoznik
pv13, написать скрипт с использованием одной из этих утилит

FileRenamer

Добавлено: 11 дек 2019, 12:56
kobolt
я только ручные методы знаю:
1)вот. Копируешь имя файла и перекидываешь.
2)xneur. вроде должен поддерживать. горячие клавиши только надо в настройках глянуть. в пунтосвитчере alt+scrollLock - крутит и туда и обратно.
3) тык. переделать в обратку только. но как применять не понимаю))

FileRenamer

Добавлено: 11 дек 2019, 13:31
FreeStyler
pv13, думаю только самописным скриптом... можно достаточно быстро на php написать

FileRenamer

Добавлено: 11 дек 2019, 15:10
rogoznik
FreeStyler, да оно и на bash будет не дольше

FileRenamer

Добавлено: 11 дек 2019, 17:39
pv13
Нашёл вот что:

Код: Выделить всё

function Lat2ru($string)
{
$rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
$lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
$string = str_replace($lat,$rus,$string);
$string = strtr($string,
     "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh_i_e",
     "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ");
return($string);
}
Может кто допилить,чтобы убирались квадратные кавычки и подчёркивания?

FileRenamer

Добавлено: 11 дек 2019, 18:11
WWolf
pv13,

Код: Выделить всё

$rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я','_','[',']');
$lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA', '','','');
или наоборот... в зависимости от направления - из какого названия нужно убрать что-то, вместо него подставляешь пустой символ...
хотя могут быть нюансы с концом строки, так что наверное надо на пробелы заменять...

FileRenamer

Добавлено: 11 дек 2019, 18:12
rogoznik
WWolf, :-D

FileRenamer

Добавлено: 12 дек 2019, 06:22
FreeStyler
rogoznik, для меня дольше раз в 10... я вообще не понимаю как что-то более менее серьёзное можно на нём делать - такой вынос мозга и простыня выходит... конечно, кто на чём привык ещё, но даже на питоне у меня быстрее выйдет

FileRenamer

Добавлено: 12 дек 2019, 07:02
rogoznik
FreeStyler, в данном конкретном случае на bash, думаю, будет даже быстрее, т.к. php-cli еще нужно установить. А вот на python, наверно, так же как и на bash. Но повторюсь - это про конкретный данный случай.

FileRenamer

Добавлено: 12 дек 2019, 07:09
FreeStyler
rogoznik, а php-cli установить это ж надо часа 3 ждать компиляции... :hm: И то если мощная машина, если слабая то все 12...
Массив символов для преобразования сам писать будешь?
Я копиписатил когда для сайта встала такая задача. Ну и работа по замене по-моему тот ещё гемор...

FileRenamer

Добавлено: 12 дек 2019, 07:51
rogoznik
FreeStyler писал(а):
12 дек 2019, 07:09
Ну и работа по замене по-моему тот ещё гемор.
Так вот уже все есть FileRenamer (Пост pv13 #90584) никакого гемора. Осталось только написать цикл перебора файлов в папке.

FileRenamer

Добавлено: 12 дек 2019, 09:28
FreeStyler
rogoznik, дык это разве баш?😑

FileRenamer

Добавлено: 12 дек 2019, 09:41
rogoznik
FreeStyler писал(а):
12 дек 2019, 09:28
дык это разве баш?
ЫЫЫ, чет я затупил - это php :-D

FileRenamer

Добавлено: 12 дек 2019, 12:25
pv13
Хорошо,братья! Спасибо за понимание. А как бы допилить это:

Код: Выделить всё

#!/bin/bash
/home/vladimir/КНИГИ 2
for NAME in * ; do
# sed-ом заменяем символы латиницы на символы кирилицы
TRS=`echo $NAME | sed "y/abvgdeeziilmnopruf/абвгдеёзийлмнопруф/"`
TRS=`echo $TRS  | sed "y/ABVGDEEZIILMNOPRUF/АБВГДЕЁЗИЙЛМНОПРУФ/"`
TRS=${TRS//zh/ж};
TRS=${TRS//kh/х};
TRS=${TRS//ch/ч};
TRS=${TRS//sh/ш};
TRS=${TRS//sch/щ};
TRS=${TRS//yu/ю};
TRS=${TRS//ya/я};
TRS=${TRS//tc/ц};
TRS=${TRS//s/с};
TRS=${TRS//k/к};
TRS=${TRS//K/к};
TRS=${TRS//e/э};
TRS=${TRS//t/т};
# переименовываем
mv -v "$NAME" "$TRS"
echo $TRS | sed 's/\(.\)/\u\1/'
done
Тема та же - убрать квадратные кавычки и подчёркивания.Но разделение слов оставить.Спасибо за понимание.

FileRenamer

Добавлено: 12 дек 2019, 12:32
rogoznik
pv13, [] так же sed-ом заменяешь на пустоту

Код: Выделить всё

sed "/[]//"
А вот подчеркивания убрать оставляя разделение слов - очень нетривиальная задача

FileRenamer

Добавлено: 12 дек 2019, 15:12
pv13
rogoznik, Брат! А в какой строке это добавить? sed "/[]//"
В моём вермуте крови нет :-D

FileRenamer

Добавлено: 12 дек 2019, 18:56
rogoznik
pv13, можешь перед этой

Код: Выделить всё

TRS=`echo $NAME | sed "y/abvgdeeziilmnopruf/абвгдеёзийлмнопруф/"`
т.е должно получиться так

Код: Выделить всё

TRS=`echo $NAME | sed "/[]//"`
TRS=`echo $NAME | sed "y/abvgdeeziilmnopruf/абвгдеёзийлмнопруф/"`

FileRenamer

Добавлено: 12 дек 2019, 19:33
pv13
Брат! Тут такая ерунда вылезла. Вышеупомянутый скрипт,переписывает расширение и тип. На ноуте всё открывается,а на электронной книжке - куку. Что изменить,чтоб только "АВТОР-ИМЯ ФАЙЛА" под замену? Спасибо за понимание.

FileRenamer

Добавлено: 12 дек 2019, 20:00
rogoznik
pv13, сделай так

Код: Выделить всё

TRS= `echo ${$NAME%.*}`
TRS=`echo $TRS | sed "/[]//"`
TRS=`echo $TRS | sed "y/abvgdeeziilmnopruf/абвгдеёзийлмнопруф/"`