ファイル名のフィールドを入れ替える

ファイル名のフィールドを入れ替える

ファイル名を次のように変更するにはどうすればよいでしょうか。 で可能だと思いますrenameが、方法がわかりません。

A_B_C.pdf

C_A_B.pdf

A、およびBは、たとえば のCように、ファイル名内の異なる単語ですComplete_Works_Plato.pdf

答え1

rename -n 's/([^_]*_[^_]*)_([^_]*).pdf/$2_$1.pdf/' *
  • [^_]*任意の数のアンダースコア以外。
  • ( )グループをキャプチャします。1 番目のペアは によって再現され$1、2 番目のペアは によって再現されます$2

-n出力に満足したら、を削除します。

シェル スクリプトを使用した同様のアプローチ:

for file in *.pdf; do
    f12=${file%_*}
    f3=${file##*_}
    f3=${f3%.pdf}
    mv -- "$file" "${f3}_${f12}.pdf"
done

パラメータ拡張%との意味が分かります##

関連情報