Изменить окончание нескольких похожих имен файлов

Изменить окончание нескольких похожих имен файлов

У меня много файлов, похожих на этот:

56.mp3?referredby=rss

Я хочу удалить их, ?referredby=rssчтобы они стали такими:

56.mp3

Как бы я это сделал?

решение1

Если у вас есть Perl rename, это так же просто, как

rename 's/\?referredby=rss//' ./*referredby=rss

С util-linux rename:

rename '?referredby=rss' '' ./*referredby=rss

решение2

За исключением экранирования ?(которое имеет особое значение в выражениях glob), это ничем не отличается от переименования любых других файлов: например, вы можете использовать простой цикл оболочки

for f in *.mp3\?referredby=rss; do mv -- "$f" "${f%\?*}"; done

где ${f%\?*}— расширение параметра оболочки, удаляющее кратчайший конечный элемент, соответствующий\?*

Связанный контент