UNIX ディレクトリ内の複数のファイルの名前を変更する

UNIX ディレクトリ内の複数のファイルの名前を変更する

sed またはその他のコマンドを使用して、以下の形式で UNIX ディレクトリにファイルがあります。

Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp

これらのファイルの名前を以下の形式に変更したい

Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp

答え1

for file in Owner.Env.File_10513_1200_ver*.expdp; do
    mv "$file" "${file/010513_1200/100613_2300}"
done

答え2

ファイルが多すぎない場合 (数万)、これで問題が解決するはずです (後でls Owner.Env.File_010513_1200_ver*.expdpファイルが残っているかどうかを確認し、残っている場合はコマンドを繰り返します)。

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

GNU では、膨大な数のファイル (および奇妙な名前のファイル) に対する代替手段は次のとおりです。

find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
  xargs -0 rename File_010513_1200_ File_100613_2300_ 

関連情報