私のディレクトリには次のファイルがあります。
mmm.1
mmm.2
mmm.3
.
.
.
.
.
名前を次のように変更したいと思います。
mmm.31
mmm.32
mmm.33
.
.
.
各ファイル名の後に続く数字に数字「30」を追加するだけです。
ベストアンサー1
編集済み:最大300個のファイルを作業中であることを知らせてから、回答を修正する必要があります。以下の編集された回答で、数字300を既存のファイルの正しいキャップ番号に置き換えます。
for file in mmm.{300..1} ; do mv "${file}" "${file%.*}.$((30+${file#*.}))" ; done
bash
この回答は、基本機能を使用してすべての操作を実行し、bash
外部プログラムやサブプロセスの起動を必要としないので効果的です。
${file%.*}
ピリオドの前のファイル名のプレフィックスを返します。`$((..)) は数学演算のための bash イディオムです。
${file#*.}
ピリオドの後にファイル名のサフィックスを返します。ファイル名に複数のピリオドを含めることができるという懸念がある場合#
は##
。
man bash
詳細やその他の非常にクールな基本機能については、リソースを参照してください。