Массово заменить русские буквы на умляуты в CUE
Русские буквы вылезают из-за кодировки CP1251. Тебе надо прочитать эти же теги/названия файлов в CP1250 (вроде) и пересохранить в UTF, например, и тогда всё должно быть ок, если софт и ОС вменяемо поддерживают юникод, конечно.
О, уже намного быстрее. Спасибо.
Köche
Это у тебя файлы с такими названиями или содержимое файла?
Кц!
винда
А далее несколько строк скрипта с find и iconv и профит.
У тебя там глубокое дерево с такими ошибками в именах всех каталогов и файлов или просто один каталог с несколькими десятками файлов?
Чуть подробней покажи как выглядят исходные файлы, а я скрипт напишу (если хочешь).
Вложенность каталогов может быть 5-6 уровней, точнее сложно сказать.
Ошибки могут быть как в именах каталогов/файлов, так и внутри самих CUE файлов.
Вероятно появляются из-за криворукости релизеров.
Выглядит это так:
\Otyg - Дlvefдrd\
Otyg - Дlvefдrd.ape
Otyg - Дlvefдrd.cue
Otyg - Дlvefдrd.log
и т.д. и т.п.
REM GENRE Folk-Rock
REM DATE 1997
REM DISCID 8709ED0C
REM COMMENT "ExactAudioCopy v0.99pb3"
PERFORMER "Otyg"
TITLE "Дlvefдrd"
FILE "Otyg - Дlvefдrd.wav" WAVE
TRACK 01 AUDIO
TITLE "Huldran"
PERFORMER "Otyg"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "I Trollberg Och Skog"
PERFORMER "Otyg"
INDEX 00 03:28:73
INDEX 01 03:30:73
TRACK 03 AUDIO
TITLE "Дlvadimmans Omdaning"
PERFORMER "Otyg"
INDEX 00 07:06:27
INDEX 01 07:08:27
TRACK 04 AUDIO
TITLE "Ulvskrede"
PERFORMER "Otyg"
INDEX 01 10:18:52
TRACK 05 AUDIO
TITLE "Fjдllstorm"
PERFORMER "Otyg"
INDEX 00 13:24:49
INDEX 01 13:26:49
TRACK 06 AUDIO
TITLE "I Hцstlig Drдkt"
PERFORMER "Otyg"
INDEX 00 16:37:54
INDEX 01 16:39:54
TRACK 07 AUDIO
TITLE "Myrdingar - Martyrium"
PERFORMER "Otyg"
INDEX 01 21:24:26
TRACK 08 AUDIO
TITLE "Allfader Vise"
PERFORMER "Otyg"
INDEX 00 24:52:52
INDEX 01 24:54:52
TRACK 09 AUDIO
TITLE "Fjдlldrottningens Slott"
PERFORMER "Otyg"
INDEX 00 28:52:28
INDEX 01 28:54:28
TRACK 10 AUDIO
TITLE "Trollpiskat Цdemarksblod"
PERFORMER "Otyg"
INDEX 00 32:30:29
INDEX 01 32:32:29
TRACK 11 AUDIO
TITLE "Draugen"
PERFORMER "Otyg"
INDEX 00 35:30:36
INDEX 01 35:32:36
TRACK 12 AUDIO
TITLE "Skymningsdans"
PERFORMER "Otyg"
INDEX 00 38:50:41
INDEX 01 38:52:41
А mp3tag с таким не справляется?
if [[ "${0}" == /* ]]; then
SCRIPT="${0}"
else
SCRIPT="`pwd`/${0}"
fi
cd "${1}"
for f in *; do
NEW_NAME=`echo "${f}" | iconv -t cp1251 | iconv -f cp1250`
if [ -d "${f}" ]; then
mv "${f}" "${NEW_NAME}"
"${SCRIPT}" "${NEW_NAME}"
elif [ -f "${f}" ]; then
if [[ "${f}" == *.[Cc][Uu][Ee] ]]; then
cat "${f}" | iconv -t cp1251 | iconv -f cp1250 > "${NEW_NAME}"
rm "${f}"
else
mv "${f}" "${NEW_NAME}"
fi
fi
done
cd -
Сохрани его в файл, например rename.sh, далее запускай так:
chmod +x rename.sh
./rename.sh /dir/with/files
/dir/with/files - каталог, где лежат твои файлы. Что там с виндопутями в сигвино-клонах надо проверять, поэтому лучше, если путь будет на этом же диске или вообще каталог files в текущем каталоге.
На всякий случай перед запуском сделай резервную копию. :-]
Ещё проверь доступность (PATH) всех утилиток типа iconv, mv, cat.
На всякий случай перед запуском сделай резервную копию. :-]а ты шутник
завтра проверю, по результату отпишусь
$ bash -version
bash -version
GNU bash, version 4.1.11(3)-release (x86_64-pc-cygwin)
$ uname -a
uname -a
CYGWIN_NT-6.1 Crypt 1.7.22(0.268/5/3) 2013-07-22 17:06 x86_64 Cygwin
$ bash rename.sh /cygdrive/k/Music
bash rename.sh /cygdrive/k/Music
rename.sh: line 9: syntax error near unexpected token `$'do\r''
'ename.sh: line 9: `for f in *; do
# bash rename.sh /mnt/disk/sdd1/Music/
rename.sh: line 9: syntax error near unexpected token `$'do\r''
'ename.sh: line 9: `for f in *; do
# uname -a
Linux drweb.com 3.2.12-drweb-6.0.2 SMP Thu Aug 9 14:07:04 UTC 2012 i686 Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz GenuineIntel GNU/Linux
# bash -version
GNU bash, version 4.2.20(1)-release (i486-pc-linux-gnu)
bash rename.sh /mnt/disk/sdd1/Music/
Если у тебя есть LiveUSB с Linux, то сделай так:
chmod +x rename.sh
./rename.sh /mnt/disk/sdd1/Music/
Crypt /cygdrive/k/Music
$ chmod.exe +x rename.sh
Crypt /cygdrive/k/Music
$ bash rename.sh /cygdrive/k/Music
rename.sh: line 9: syntax error near unexpected token `$'do\r''
'ename.sh: line 9: `for f in *; do
Crypt /cygdrive/k/Music
$ ls -la /cygdrive/k/Music/rename.sh
-rwx--x--x+ 1 Administrators None 485 Jul 30 2013 /cygdrive/k/Music/rename.sh
Может из-за этого?$ chmod.exe +x rename.sh
Crypt /cygdrive/k/Music
$ bash rename.sh /cygdrive/k/Music
rename.sh: line 9: syntax error near unexpected token `$'do\r''
'ename.sh: line 9: `for f in *; do
Crypt /cygdrive/k/Music
$ ls -la /cygdrive/k/Music/rename.sh
-rwx--x--x+ 1 Administrators None 485 Jul 30 2013 /cygdrive/k/Music/rename.sh
точно
1) русские названия - давай досвидания
$ echo 05Жизнь.mp3 | iconv -t cp1251 | iconv -f cp1250
05Ćčçíü.mp3
2) если iconv не справился, то файл удаляется, пичаль
iconv: (stdin):1:27: cannot convert
было
44110 Feb 20 18:42 cover.jpg
473632968 Jul 12 2008 In Extremo - Kein Blick Zurück CD1.ape
1778 Jul 12 2008 In Extremo - Kein Blick Zurück CD1.cue
1783 Jul 26 19:54 In Extremo - Kein Blick Zurück CD11.cue
931 Jul 12 2008 Kein Blick Zurück CD1.log
стало
44110 Feb 20 18:42 cover.jpg
0 Jul 30 17:22 In Extremo - Kein Blick Zur
931 Jul 12 2008 Kein Blick Zur
462 Jul 30 2013 rename.sh
echo "In Extremo - Kein Blick Zurück CD1.ape" | iconv -t cp1251 | iconv -f cp1250
iconv: (stdin):1:27: cannot convert
In Extremo - Kein Blick Zur
А ты что хотел чтобы оно само определило у тебя там правильная русская буква или ошибка и там должны быть умляуты?
В условии говорилось, что в каталоге все файлы и каталоги с испорченными названиями.
А ты что хотел чтобы оно само определило у тебя там правильная русская буква или ошибка и там должны быть умляуты?
я ожидал, что скрипт не заработает, поэтому прогонял на тестовом наборе
но что бы настолько все криво я не ожидал
В условии говорилось, что в каталоге все файлы и каталоги с испорченными названиями.ну вообще-то я написал, что "ошибки могут быть" это не тоже самое, что ошибки обязательно будут
спасибо за попытку, дальше сам поколупаю скрипт
В общем, судя по твоей реакции, я зря тратил время на тебя. Как и большинству виндузятников тебе важны шашечки, а не резултьтат - печально. :-(
резюмирую - Спасибо, скрипт пригодится.
Оставить комментарий
Troyn09
Есть куча CUE файлов в которых путаница с кодировкой, из-за чего умляуты заменились на русски буквы. Выглядит это так:Kцche вместо Köche
Править кодировку вручную и каждую букву в отдельности, несколько утомительно.
Как бы это массово пофиксить.
Подзадача - переименовать файлы, если в их именах также встречаются такие ошибки.