Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Удалить из имени файла ненужное, используя Sed  (Прочитано 517 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Осваиваю Sed.
Есть файлы:
Цитировать
Файл-1 (pro)-eojUBB_8V_4.mp4
Файл-2 (pro)-Ek2iyeeL1Vc.mp4
Файл-3 (pro)-Gh8F6OJa0gU.mp4
Файл-4 (pro)-SvL_aZt3zyU.mp4
Хочу привести к виду:
Цитировать
Файл-1 (pro).mp4
Файл-2 (pro).mp4
Файл-3 (pro).mp4
Файл-4 (pro).mp4
Проверяю всё на 'ls'.
Цитировать
ls -1 | sed 's/(pro)-*.mp4/(pro).mp4/g'
Но получаю шиш.

Прошу, наведите на путь истинный.
Благодарю! ;)
« Последнее редактирование: 29 Июль 2015, 19:05:28 от insiki »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: Bash
  1. ls | sed 's/-[^-]\+\././'
.* — любое количество любых символов
« Последнее редактирование: 29 Июль 2015, 19:12:49 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Цитировать
.* — любое количество любых символов
И была мысль, чтоб в шаблоне искать по любому количеству любых символов между (pro) и .mp4 :)
Но, видимо, неправильная мысль.
Здесь, по ключикам:
Цитировать
's/-[^-]\+\././'
s/- - первое '-' внутри s/ непонятно
[^-] - ищем шаблон, который начинается с '-'
\+ - экранируем '+', который отвечает за .. то, что будет между дефизом и точкой? Или "One or more times"?
\. - экранируем точку '.'
/./ - заменяем на точку.
Верно?
« Последнее редактирование: 29 Июль 2015, 19:32:34 от insiki »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
s/- - первое '-' внутри
не обязательно первое
s/ непонятно
команда — от substitute(замена)
[^-] - ищем шаблон, который начинается с '-'
любой символ, кроме «-»
\+ - экранируем '+', который отвечает за .. то, что будет между [^-] и \.?
один или более предыдущих символов
Таким образом «-1 (pro)-eojUBB_8V_4.» не удовлетворяет, а «-eojUBB_8V_4.» удовлетворяет.
« Последнее редактирование: 29 Июль 2015, 19:38:56 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Честно, я каждый раз лезу в man sed, смотрю, ничего не понимаю (ну кроме простых вещей типо s/Вася/Петя/g или, используя регулярки типа "^", "*", "$"), потом лезу в Google, сижу еще час в гугле и потом сдаюсь.
Благодарю.
Таким образом «-1 (pro)-eojUBB_8V_4.» не удовлетворяет, а «-eojUBB_8V_4.» удовлетворяет.
Вот здесь не подумал, что будет акцентировано на это внимание.
В целом, настоящий файл имеет примерно такой вид:
Цитировать
Ruby on Rails - Railscasts PRO #289 PayPal Recurring Billing (pro)-YCKX4PnuYP4.mp4
В хвосте имени - скажем так, ID записи на ютубе, которую и необходимо было отсечь.
« Последнее редактирование: 29 Июль 2015, 19:45:26 от insiki »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
man sed это скорее напоминалка, чем полноценный ман. Лучше info sed, ну или интернет SED tutorial, citforum.ru, Линукс по русски
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.074 секунд. Запросов: 24.