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

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

これに似たファイルがたくさんあります:

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%\?*}、一致する最短の末尾の要素を削除するシェルパラメータ展開です。\?*

関連情報