Altere o final de vários nomes de arquivos semelhantes

Altere o final de vários nomes de arquivos semelhantes

Eu tenho muitos arquivos parecidos com este:

56.mp3?referredby=rss

O que eu quero fazer é remover ?referredby=rsspara que fiquem assim:

56.mp3

Como eu faria isso?

Responder1

Se você tiver Perl rename, é tão fácil quanto

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

Com util-linux rename:

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

Responder2

Além de escapar do ?(que tem um significado especial em expressões glob), isso não é diferente de renomear qualquer outro arquivo: então, por exemplo, você poderia usar um simples loop de shell

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

onde ${f%\?*}está uma expansão de parâmetro do shell que remove a correspondência de elemento final mais curta\?*

informação relacionada