異なる数字を含む複数のファイルの名前変更

異なる数字を含む複数のファイルの名前変更

次の形式のファイルが複数あります。 (ファイルは一般的ではない各ファイル名に対応します。)

File1_S20.tab
File2_S25.tab
File3_S40.tab
etc.

私はそれらの名前をすべて変更して、次のようにしたいと思います。

File1
File2
File3
etc.

デフォルトでは、_S$$.tabすべてのファイルからそのセクションを削除します。

ファイル名を変更するには、通常、次の名前変更コマンドを使用します。 (にrename # somethingelse *.tab置き換えられます)#somethingelse

しかし、私が経験している唯一の問題は、各ファイルがS

ベストアンサー1

rename簡単に曲げないutil-linuxバージョンを使用しているようです。というPerlベースのツールもありますrename(参照:「名前変更」と「mv」の違いは何ですか?)

Perlを使用して名前を変更すると、簡単に入手できます(または追加して-n実行することを確認してください)。

rename 's/_S\d+\.tab//' File*.tab

(Perlで名前変更ループを実装するのは比較的簡単ですが、正確かつ安全に実装するには数行のコードが必要です。)

ただし、シェルのループを介してこれを行うことはできます。

for f in File*.tab; do
    mv -n -- "$f" "${f%%_S[0-9][0-9].tab}"
done

"${f%%_S*.tab}"2つの数字の代わりに任意の数字を一致させるか、shopt -s extglobBashで使用して"${f%%_S+([0-9]).tab}"そこにある任意の数字を一致させます。)

おすすめ記事