Как переименовать все файлы в папке

У меня есть папка, которая содержит много файлов с одинаковой структурой:

file.number1.2010.720p.otherinfo.mp4
file.number2.1990.720p.otherinfo.mp4
....

Я хотел бы удалить всю последовательность:

YEAR.720p.otherinfo

Поэтому имя будет:

file.number1.mp4
file.number2.mp4
....

И, наконец, я хотел бы удалить все точки (.), Кроме точки в конце (.mp4)

Какие команды мне следует использовать для создания такого сценария?

5
задан 14 August 2019 в 15:58

4 ответа

Это сделает задание:

Во-первых: установка rename путем выполнения следующей команды в терминале:

sudo apt install rename

Во-вторых: В терминале,cd к каталогу, содержащему Ваши файлы.

Наконец: Переименуйте файлы к своему нужному формату путем выполнения следующей команды в терминале:

rename 's/^(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.mp4$/$1$2.mp4/' *

Готово


Уведомление:

Видеть как rename команда будет воздействовать на Ваши файлы, но действительно не переименовывая их (просто печатают вывод к терминалу), можно добавить опцию -n после него. Как так:

rename -n 's/^(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.mp4$/$1$2.mp4/' *

Объяснение - согласно просьбе Hamza:

Часть № 1:

's/ORIGINAL/NEW/'

Замены ORIGINAL строка с NEW строка.

Чтобы видеть, как это работает простым, поскольку это добирается:

  • Выполненный в терминале rename -n 's/file.number1.2010.720p.otherinfo.mp4/NEW.mp4/' *
  • Принятию Вас назвали файл file.number1.2010.720p.otherinfo.mp4 в текущем каталоге.
  • Вывод был бы rename(file.number1.2010.720p.otherinfo.mp4, NEW.mp4)

Часть № 2:

^(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.mp4$

Запускается в начале строки ^ и затем соответствия один или несколько character/s (любой символ) (.+) перед точкой \.

Эта группа помещается в переменную $1 и повторенный еще четыре раза (пять всего) каждая группа помещается в переменную ( $2, $3, $4, $5 ) до .mp4 представленный как \.mp4 достигнут.

Удостоверяется строковые концы с .mp4 при помощи $ символ, который соответствует концу строки.

Эта часть, однако, немного гибка и даст Вам нежелательные результаты, если именование файла непоследовательно, и у Вас есть файлы больше чем с пятью частями, разделенными точками на их имена как file.number1.2010.720p.otherinfo.extrainfo.mp4

Если это верно, займите место, это расстается с более строгим регулярным выражением ниже. Таким образом, это будет только воздействовать на файлы с пятью частями, разделенными точками на их имена только:

^([^.]+)\.([^.]+)\.([^.]+)\.([^.]+)\.([^.]+)\.mp4$

Часть № 3:

$1$2.mp4

Определяет новое имя файла как, что находится под переменной для первой группы $1 (в этом случае file ) +, что находится под переменной для второй группы $2 (в этом случае number(x) ) + .mp4

Часть № 4:

*

Воздействует на все файлы в текущем каталоге.

4
ответ дан 23 November 2019 в 09:11

Можно использовать cut и bash обработка строк:

Первый подход: только с cut:

for I in .*mp4
do
    echo mv "$I" "$(echo $I | cut -d. -f 1,2,6)"
done 

Объяснение:

  • for... выберет все .mp4 файлы
  • echo $I | преобразует I переменная во вход для следующей программы
  • cut -d. -f 1,2,6 выберет поля 1, 2 и 6, где поля разделяются .

Но этот подход может быть проблематичным с тех пор, 6-е поле может быть не расширением.


Таким образом, у Вас может быть второй путь:

for I in .*mp4
do
    echo mv "$I" "$(echo $I | cut -d. -f 1,2).mp4"
done 

С той командой Вы вынуждаете расширение быть .mp4. Это будет работать, но что, если Вы не будете иметь только mp4 файлы с тем же шаблоном именования?


В этом случае можно использовать дополнительный выбор:

for I in *mp4 *avi
do
    echo mv "$I" "$(echo $I | cut -d. -f 1,2).${I##*.}"
done
  • ${I##*.} позволит Вам выбирать то, что находится позади последнего . в переменной I

Примечание: для предотвращения плохого поведения добавил я echo в командах для наблюдения то, что они сделают прежде, чем выполнить их действительно.

2
ответ дан 23 November 2019 в 09:11

Выберите все файлы и нажмите F2; затем сделайте то, что показывают в изображении ниже. bulk rename

https://docs.xfce.org/xfce/thunar/4.12/bulk-renamer/start

0
ответ дан 23 November 2019 в 09:11

Я всегда использую Thunar (filemanager) для этого, просто открывают его, выбирают файлы, которые Вы хотите изменить (сокращайте/вставляйте/корректируйте/заменяйте символы), и затем щелкните правой кнопкой->, переименовывают

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

0
ответ дан 23 November 2019 в 09:11

Другие вопросы по тегам:

Похожие вопросы: