複数の類似ファイル名の末尾の変更

複数の類似ファイル名の末尾の変更

次のようなファイルがたくさんあります。

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%\?*}一致の最短末尾要素を削除するためのシェルパラメータ拡張はどこにありますか?\?*

関連情報