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


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

Автор Тема: Групповое переименование файлов  (Прочитано 5150 раз)

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

Оффлайн vik2

  • Автор темы
  • Активист
  • *
  • Сообщений: 375
    • Просмотр профиля
Здравствуйте.
Мне нужно для МР3 плеера записать на карту памяти аудиокниги(несколько). Так как плеер в папках не разбирается(или я не умею им пользоваться),то надо записать поочередно файлы нескольких аудиокниг.
Думаю,что для этого надо переименовать файлы каждой аудиокниги,чтобы они разместились поочередно.
Большинство файлов уже начинается с цифр,бывают и без цифр.

Вопрос.  Как в конкретной папке с файлами одной аудиокниги изменить название файлов,чтобы названия их начинались с нужного мне числа (например:  008 ) и это число увеличивалось на 1 в следующем файле ( 009,010,011,012...)
Кроме изменения этих первых цифр или их добавления(если начало с букв) изменять ничего не надо.Можно изменять имя полностью,если надо.
Как сделать это переименование командой?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #1 : 14 Марта 2016, 16:11:22 »
Например так?n=8 ; for i in * ; do printf "mv $i %03d.$i\n" $((n++)); doneЕсли показывает то что надо, то добавить в конец строки | bash
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Гость
Re: Групповое переименование файлов
« Ответ #2 : 14 Марта 2016, 16:44:16 »
2016 Mar 14; 09:44 AM; Oakville, ON, Canada.

— Если вдруг не будет получаться с командой (могут быть вопросы положим с кириллическими именами файлов, такое бывает с этой музыкой), попробуйте программой GPRename 2.6 с графическим интерфейсом.

— Программа в использовании несложная, не требует много времени для освоения.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7486
  • Luck Tales
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #3 : 14 Марта 2016, 16:48:28 »
Azure,
про возможные пробелы и спецсимволы в имени файла не забыли?
n=8 ; for i in * ; do printf "mv \'$i\' \'%03d.$i\'\n" $((n++)); done
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн vik2

  • Автор темы
  • Активист
  • *
  • Сообщений: 375
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #4 : 14 Марта 2016, 17:15:04 »
Сначала зашел в папку:  cd путь\ к\ папке (вставил \ перед пробелом),
потом выполнил команду n=8 ; for i in * ; do printf "mv $i %03d.$i\n" $((n++)); done
 
в терминале появилось:
mv 01.mp3 008.01.mp3
mv 02.mp3 009.02.mp3

Это значит,что первый файл станет 008.01.mp3  ?

Теперь добавляю | bash
n=8 ; for i in * ; do printf "mv $i %03d.$i\n" $((n++)); done | bash
Все правильно?


Пользователь решил продолжить мысль [time]14 Март 2016, 18:18:31[/time]:
Получилось так 008.01.mp3

Пользователь решил продолжить мысль 14 Марта 2016, 17:37:19:
Все получилось,спасибо. Правда не пробовал с кириллическими именами файлов.
Надеюсь что проблем не будет с теми цифрами после точки (т.е. старой нумерацией) и нужный порядок не изменится:
 
008.01.mp3
009.02.mp3
076.01.мр3
077.02.мр3
А вообще,можно как-то без этих "старых" цифр (т.е. 01,02...)
« Последнее редактирование: 14 Марта 2016, 17:37:19 от vik2 »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #5 : 14 Марта 2016, 18:11:10 »
Любые цифры?n=8 ; for i in * ; do printf "mv \"$i\" \"%03d.${i//[0-9]/}\"\n" $((n++)); done | bash
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн vik2

  • Автор темы
  • Активист
  • *
  • Сообщений: 375
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #6 : 14 Марта 2016, 20:45:15 »
Любые цифры?n=8 ; for i in * ; do printf "mv \"$i\" \"%03d.${i//[0-9]/}\"\n" $((n++)); done | bash
Нежелательны те цифры,что между двумя точками. А после этой команды их не будет?

adawdp

  • Гость
Re: Групповое переименование файлов
« Ответ #7 : 14 Марта 2016, 21:17:58 »
2016 Mar 14; 02:17 PM; Oakville, ON, Canada.

— Понимаете, vik2, переименование музыкальных файлов это перманентно возникающая тема на многих ресурсах. Ничего так часто не хотят переименовывать как это :( … И тому много причин.

— Большинство этих файлов имеет “нечеловеческие” названия тут тебе и пробелы и специальные символы и многочисленные точки и подчёркивания ( точки и подчёркивания лучший вариант )…

— Я к тому, что проблема комплексная и потому задачу нужно разбивать как правило на несколько этапов. Например сначала присвоить файлам номера, потому произвести положим транслитерацию, потом сделать первую букву каждого слова заглавной, потом удалить специальные символы и пробелы. В конце получить файл типа:
Код: (bash) [Выделить]
1510Oct191049WaterRobots.mp3
1510Oct211005mokingWillKill.mp3
1511Nov160859EverydayGrammar.mp3
1511Nov192018AverageAmericansGaveAwayBillionsIn2014.mp3
1511Nov201415BetterMakeRoomForCollegeKids.mp3
— Это не обязательный вариант, это пример.
— Если у Вас это разовая операция, то переименуйте как я писал выше программой GPRename и забудьте.

— Если Вам предстоит это делать часто, то под свои конкретные задачи Вам придётся писать скрипт.
Начало уже положено. Azure Вам дал направление. Далее вводите в поиск положим «Linux пакетное переименование МП-3 файлов» Вы узнаете много интересного. :) !

— Кроме того не видя наименований  ваших файлов, а только лишь по данному Вами их описанию сложно даже специалисту оказать вам квалифицированную помощь.

— Приведите примеры ваших файлов положим тип a, b, c … Приведите примеры выполнения команды, попытайтесь сами подправить команду ну и так далее.

Оффлайн vik2

  • Автор темы
  • Активист
  • *
  • Сообщений: 375
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #8 : 14 Марта 2016, 21:49:50 »
В основном файлы аудиокниг именуются так:
058.mp3,  реже   
01_01_Snaiper.mp3,  еще реже
A.Miln_-_Vinni-Puh_i_Vse-Vse-Vse_01.mp3

После выполнения первой команды (вторую побоялся выполнять) выходит:
076.01.мр3
Сначала новый порядковый номер,потом точка и повторяется старый порядковый номер. Вот этот старый номер не нужен,если не трудно это сделать.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #9 : 14 Марта 2016, 21:50:40 »
А после этой команды их не будет?
Странные люди… Я же показал в самом начале: убираете | bashи получаетете список что меняется и на что. Если надо убрать цифры из начала имениn=8 ; for i in * ; do printf "mv \"$i\" \"%03d.${i##*[0-9]}\"\n" $((n++)); done
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн vik2

  • Автор темы
  • Активист
  • *
  • Сообщений: 375
    • Просмотр профиля
Re: Групповое переименование файлов
« Ответ #10 : 14 Марта 2016, 21:58:44 »
Azure,
Спасибо.
« Последнее редактирование: 17 Февраля 2020, 19:01:08 от zg_nico »

 

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