特定のファイルセットの名前を変更する (Linux)

特定のファイルセットの名前を変更する (Linux)

以下のファイルがあります:

boxScoreBaseball.html.php
boxScoreBasketball.html.php
boxScoreBowling.html.php
boxScoreCheer.html.php
boxScoreCrew.html.php
boxScoreCrossCountry.html.php
boxScoreEquestrian.html.php
boxScoreFieldHockey.html.php
boxScoreFootball.html.php
boxScoreGolf.html.php
boxScoreGymnastics.html.php
boxScoreHockey.html.php
boxScoreLacrosse.html.php
boxScoreRugby.html.php
boxScoreSkiing.html.php
boxScoreSoccer.html.php
boxScoreSoftball.html.php
boxScoreSwimming.html.php
boxScoreTennis.html.php
boxScoreTrack.html.php
boxScoreVolleyball.html.php
boxScoreWaterPolo.html.php
boxScoreWrestling.html.php

各ファイルから の部分を削除したいのでboxScore、たとえば はboxScoreBaseball.html.phpになりますbaseball.html.php。これを行う最も簡単な方法は何ですか?

答え1

おそらく Bash でのみ動作します:

for i in boxScore*; do mv $i ${i#boxScore}; done

私はいつも、手っ取り早く bash を操作するためにこのリファレンスを使用します:http://aurelio.net/shell/canivete/en/(セクション4を参照)。

答え2

もう一つの選択肢はmmvさらなる例についてはこの記事をご覧ください)。

与えられた例の場合:

mmv "boxScore*.html.php" "#1.html.php"

答え3

すべてを直接名前変更することはできません。bash スクリプトを使用する必要があります。次のリンクが役に立つかもしれません:

答え4

次の小さなシェル スクリプトを実行します。

for file in *; do echo "${file:8}" | sed -e 's/^\([A-Z]\)\(.*\)/\l\1\2/' | xargs mv "$file"; done

現在のディレクトリ内のすべてのファイルを反復処理します。まず、最初の 8 文字を除いたファイル名をエコーし​​ます。次に、を使用してsed最初の文字を小文字に変換します。sed検索式は「行の先頭、グループ 1: 大文字、グループ 2: 残り」を意味し、置換式は「グループ 1 に一致する小文字、次にグループ 2 を追加する」ことを意味します。最後の部分は、古いファイルを変換されたファイル名に移動するだけです。

関連情報