переименовать расширение файла из терминала не работает должным образом - PullRequest
0 голосов
/ 31 мая 2018

У меня есть куча файлов, названных так:

file.jpg?sw=450&sh=450

Я хочу переименовать их, удалив это ужасное расширение, и получу следующее:

file.jpg

Я попробовал этот скрипт:

for file in *'.jpg?sw=450&sh=450'; do mv "$file" "${file%}".jpg; done

, а также этот скрипт:

for file in *'.jpg?sw=450&sh=450'; do mv "$file" "${file%}'.jpg?sw=450&sh=450'".jpg; done

Что происходит, если я получаю этот результат:

file.jpg? Sw = 450 & sh = 450.jpg

1 Ответ

0 голосов
/ 31 мая 2018

Bash - один из способов сделать это, хотя я мог бы рассмотреть использование rename, которое переименовывает на основе регулярных выражений.Рассмотрим:

$ rename 's/\.jpg\?.*$/.jpg/' *.jpg\?*

Это говорит:

  • Учитывая файлы, соответствующие глобусу *.jpg\?*
  • Заменить в именах файлов вхождения .jpg, которыепосле них стоит знак вопроса и все символы после него: /\.jpg\?.*$/
  • с простой строкой .jpg
...