
このファイル名を持つ複数のファイルがあるので、名前をこのように変更したいと思います。
現在:
file_name.mt0
file_name.mt1
file_name.mt2
file_name.mt3
file_name.mt4
file_name.mt5
file_name.mt6
file_name.mt7
file_name.mt8
file_name.mt9
file_name.mt10
file_name.mt11
新しい:
file_name.mt0000
file_name.mt0001
file_name.mt0002
file_name.mt0003
file_name.mt0004
file_name.mt0005
file_name.mt0006
file_name.mt0007
file_name.mt0008
file_name.mt0009
file_name.mt0010
file_name.mt0011
よろしくお願いします~~
答え1
次のスクリプトでこれを実行できます。
#! /usr/bin/ksh
typeset -Z4 N
find . -name 'file_name.mt*' | while read FN
do
N=${FN#./file_name.mt}
mv $FN file_name.mt$N
done
答え2
Larry Wallsのシンプルで強力な名前変更コマンドは正しい選択です。
rename 's/(\d+)$/sprintf("%04d",$1)/e' file*
答え3
#!/bin/bash
for i in file_name*; do
nf=`printf "file_name.mt%04d" ${i//[!0-9]/}`;
mv $i $nf;
done
以下は、目的のタスクを実行するbashスクリプトです。 lsを削除し、globを使用しました。素晴らしい参考文献@Sparkhawk