LINUX.ORG.RU

Bash Scripting


0

0

Решил написать скриптик, столкнулся с плохой ситуацией. Роль скрипта перекодировка тегов mp3 файлов в UTF-8.

$ cat /usr/bin/mp3convert
#!/bin/bash

for file in *
        do
                /usr/local/mp3unicode/bin/mp3unicode -s cp1251 --id3v2-encoding unicode $file
        done

Все бы ничего, если бы некоторые файлы не содержали пробелы, например:

$ ls
01 Sila Uma.mp3       04 Inostr.mp3          07 Вечный символ страха.mp3      10 Get Down.mp3    13 Синяя тема.mp3
02 Джедаи.mp3         05 Кому ты веришь.mp3  08 Вот так я развлекаюсь.mp3     11 Школьнички.mp3
03 Новый порядок.mp3  06 Риальная тема.mp3   09 Золотой гвоздь программы.mp3  12 С другими.mp3

При попытке выполнить mp3convert:

$ mp3convert
Error: Cannot open file: 01.
Error: Cannot open file: 02.
Error: Cannot open file: 03.
Error: Cannot open file: 04.
Error: Cannot open file: 05.
Error: Cannot open file: 06.
Error: Cannot open file: 07.
Error: Cannot open file: 08.
Error: Cannot open file: 09.
Error: Cannot open file: 10.
Error: Cannot open file: 11.
Error: Cannot open file: 12.
Error: Cannot open file: 13.

Как я пологаю вариантов может быть два:
1) Каким-то флагом в ls заставлять выводить пробелы в названиях файлов экранированными.
2) Заменять в скрипте пробел на экранированный пробел.

Но вопрос как? С утра, что-то не очень хорошо голова работает.
★★★

Ответ на: комментарий от Uncle_Theodore

Гениально, б*я! Реально с утра голова не работает абсолютно. Спасибо :)

VirRaa ★★★
() автор топика

# If any filenames contain spaces, first convert them to underscores: for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.