ファイル名のフィールド交換

ファイル名のフィールド交換

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

A_B_C.pdf

到着

C_A_B.pdf

ABおよびC私のファイル名には別の単語があります(例Complete_Works_Plato.pdf:。

答え1

rename -n 's/([^_]*_[^_]*)_([^_]*).pdf/$2_$1.pdf/' *
  • [^_]*下線以外の数字に制限はありません。
  • ( )グループをキャプチャします。最初のペアはコピーで構成され、$12番目のペアはコピーで構成されています$2

-n出力が満足な場合は削除してください。

シェルスクリプトに対する同様のアプローチ:

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

存在するパラメータ拡張%そしての意味を発見するでしょう##

関連情報