Ändern Sie das Ende mehrerer ähnlicher Dateinamen

Ändern Sie das Ende mehrerer ähnlicher Dateinamen

Ich habe viele Dateien, die ähnlich wie diese aussehen:

56.mp3?referredby=rss

Ich möchte sie entfernen, ?referredby=rsssodass sie folgendermaßen aussehen:

56.mp3

Wie würde ich das machen?

Antwort1

Wenn Sie Perl haben rename, ist es so einfach wie

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

Mit util-linux rename:

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

Antwort2

Abgesehen vom Escapen ?(das in Glob-Ausdrücken eine besondere Bedeutung hat) unterscheidet sich dies nicht wirklich vom Umbenennen anderer Dateien: Sie könnten beispielsweise eine einfache Shell-Schleife verwenden

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

wobei es ${f%\?*}sich um eine Shell-Parametererweiterung handelt, die das kürzeste nachfolgende Element entfernt, das übereinstimmt\?*

verwandte Informationen