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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Скрипт для переименования файлов  (Прочитано 627 раз)

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

Оффлайн Syva007

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Скрипт для переименования файлов
« : 17 Февраля 2019, 12:46:40 »
Всем, доброго времени суток. Может подскажите скрипт с переименованием для такого процесса?

В папке Ми-ми-мишки (обновляемая раздача с torrent).
Серии выглядят так: 
001_ми-ми-мишки.mkv
002_Грибы и листья.mkv
003_Фотоохота.mkv
-//-//-
126_Система безопасности.mkv

Необходимо переименовать в:
Be-Be-Bears.s01.e01.mkv
Be-Be-Bears.s01.e02.mkv
-//-//-
Be-Be-Bears.s01.e26.mkv (т.е последняя переименованная серия, должа быть с 026_Нежданные гости.mkv).

Затем должен смениться номер сезона:
028_Гол.mkv
027_Необитаемый остров.mkv
Имя должно получиться
Be-Be-Bears.s02.e01.mkv
Be-Be-Bears.s02.e02.mkv
-//-//-
и так еще 26 файлов, т.е последняя серия для сезона 2, должна быть 052_ми-ми-мишки.mkv
Затем сезон меняется на 3.
и так далее.


P.S Клиент Transmission, читальщик RSS Flexget
При обновлении раздачи, чтоб не перекачивались старые файлы.

 




Пользователь добавил сообщение 17 Февраля 2019, 13:25:37:
тут на форуме попался, вот такой
#!/bin/bash
#Tue Jun 15 22:18:59 MSD 2010

s=1 #номер сезона
m=1 #стартовый номер серии
p=ubuntu #название сериала
IFS=$'\t\n' #необходимо для работы ls, без этого будут проблемы если в файлах есть пробелы

for i in `ls ./ | grep .avi`
do
mv "$i" "$p-$s-$m.avi"
((m++))

done

как бы для начала гуд, но при добавлении нового файла и запуска этого скрипта, Все ранее переименованные файлы удаляются.
« Последнее редактирование: 17 Февраля 2019, 13:25:37 от Syva007 »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #1 : 17 Февраля 2019, 18:22:04 »
rename 's/0/Be-Be-Bears.s01.e/' {001..026}*.mkv
rename 's/\d+/"Be-Be-Bears.s02.e0".(($&-26))/e' {027..035}*.mkv
rename 's/\d+/"Be-Be-Bears.s02.e".(($&-26))/e' {036..052}*.mkv
rename 's/\d+/"Be-Be-Bears.s03.e0".(($&-52))/e' {053..061}*.mkv
rename 's/\d+/"Be-Be-Bears.s03.e".(($&-52))/e' {062..078}*.mkv
rename 's/\d+/"Be-Be-Bears.s04.e0".(($&-78))/e' {079..087}*.mkv
rename 's/\d+/"Be-Be-Bears.s04.e".(($&-78))/e' {088..104}*.mkv
rename 's/\d+/"Be-Be-Bears.s05.e0".(($&-104))/e' {105..113}*.mkv
rename 's/\d+/"Be-Be-Bears.s05.e".(($&-104))/e' {114..130}*.mkv
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #2 : 17 Февраля 2019, 19:06:11 »
Код: (bash) [Выделить]
s=0;
for f in [0-9]*.mkv; do
    e=$((10#${f%_*}));
    mv "$f" "$(printf "Be-Be-Bears.s%02d.e%02d.mkv" $((s+1)) $((e-(26*s))))";
    if ! ((e % 26)); then
        ((s++));
    fi;
done
« Последнее редактирование: 17 Февраля 2019, 19:15:56 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Syva007

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #3 : 18 Февраля 2019, 00:48:27 »
ОГРОМНОЕ СПАСИБО!!!! то, что надо.

Оффлайн Syva007

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #4 : 24 Февраля 2019, 15:01:42 »
Может еще подскажите? Как подправить этот скрипт

s=0;
for f in [0-9]*.mkv; do
    e=$((10#${f%_*}));
    mv "$f" "$(printf "Be-Be-Bears.s%02d.e%02d.mkv" $((s+1)) $((e-(26*s))))";
    if ! ((e % 26)); then
        ((s++));
    fi;
done

Если название такое:
Серия 1.mkv
Серия 2.mkv


Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #5 : 24 Февраля 2019, 15:27:01 »
Цитировать
for i in `ls ./ | grep .avi`

for i in ./*.avi
Wars ~.o

Оффлайн Syva007

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Скрипт для переименования файлов
« Ответ #6 : 24 Февраля 2019, 15:32:13 »
Цитировать
for i in `ls ./ | grep .avi`

for i in ./*.avi

Спасибо. Только, хотелось бы для скрипта, который я указал.

Пользователь добавил сообщение 25 Февраля 2019, 00:07:12:
спасибо, разобрался. Необходимо колдовать тут
f%_*
« Последнее редактирование: 25 Февраля 2019, 00:07:12 от Syva007 »

 

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