ファイル名の部分文字列を置き換えてファイル名を一括変更するには?

ファイル名の部分文字列を置き換えてファイル名を一括変更するには?

ABC_asd_f.txt、、...DEF_qwe_r.txtなどのファイルがあります。

最初のアンダースコアの前の大文字をその後の小文字に置き換える方法は?だからそれは、ABC_asd_f.txtなった、...asd_f_ABC.txtDEF_qwe_r.txtqwe_r_DEF.txt

ベストアンサー1

Perlを使用して名前を変更します。-nフラグを使用してテストの実行を開始してください。

rename -n 's/^(...)_(..._.)/$2_$1/' *

それから、満足したら実際に実行してみてください。

rename 's/^(...)_(..._.)/$2_$1/' *

説明する

これはキャプチャグループを使用します。

  • rename 's/foo/bar/' *:すべてのファイルfooに置き換えられます。bar*
  • ^(...)_(..._.):行の先頭から始めて^最初の3文字をキャプチャし、(...)スキップし_て4番目の文字がアンダースコアで5文字をキャプチャします(..._.)
  • $2_$1:上記の文字列を反対のキャプチャグループ(たとえば、2番目、下線、1番目)に置き換えます。

バージョン名の変更

renameLinuxの世界には2つあります。以下を使用してPerlの名前を変更するかどうかを確認できます。

$ rename --version
perl-rename 1.9

もう一つは別の結果を提供します。

$ rename --version
rename from util-linux 2.28

おすすめ記事