2011-12-17 2 views
0

Я хотел организовать свои mp3-файлы и переименовать их, используя шаблон: artist - song.переименование mp3 с помощью regex

Мне нужно регулярное выражение, которое выбирает все слова перед первой тире, а затем последнюю тире и все символы, продолжающиеся после.

В примере, [09] System Of A Down -Toxicity - 03 - Чоп Suey.mp3:

  1. всех элементы слово перед первым тиром: Система вниз
  2. последнего тира : -
  3. все остальное после последней черточки: Chop Suey.mp3

Как мне это сделать?

ответ

0

Существует команда linux rename, которая именно то, что вы хотите.
Например, чтобы переименовать все файлы, соответствующие «* .bak» раздеть расширение, можно сказать

rename 's/\.bak$//' *.bak 

Чтобы перевести прописные имена ниже, вы будете использовать

rename 'y/A-Z/a-z/' * 

Чтобы переименовать [09] System Of A Down -Toxicity - 03 - Чоп Suey.mp3 к Токсичность - Чоп Suey.mp3

# you should rewrite regex to meet your requirement 
rename 's/.*-(.*)-.*-(.*)/$1 - $2/' *.mp3 

Это музыкальный проигрыватель Windows foobar2000, который может отлично справиться с этой задачей.
Свойства ->Формат из других областей ...

0

Если вы используете Windows, я настоятельно рекомендую использовать бесплатную программу: MP3Tag. Он легко выполнит переименование, которое вы запрашиваете (и многое другое).

0

Может быть это может помочь -

sed 's/[[0-9]\+] \([A-Za-z ]*[^-]\) -.*[^-]- \(.*\)/\1-\2/' 

Тест:

[jaypal:~/temp] echo "[09] System Of A Down -Toxicity - 03 - Chop Suey.mp3" | 
sed 's/[[0-9]\+] \([A-Za-z ]*[^-]\) -.*[^-]- \(.*\)/\1 - \2/' 
System Of A Down - Chop Suey.mp3 

ИЛИ

awk -F"-" '{print $1"-"$4}' | sed 's/[[0-9]\+] //g' 

Тест:

[jaypal:~/temp] echo "[09] System Of A Down -Toxicity - 03 - Chop Suey.mp3" | 
awk -F"-" '{print $1"-"$4}' | sed 's/[[0-9]\+] //g' 
System Of A Down - Chop Suey.mp3 
0

Вы можете найти "золотую середину" модель, делая (-.*-) и заменить -. Чтобы удалить номера, которые вы можете использовать (\[[0-9]*\])

Смежные вопросы