交换文件名中的字段

交换文件名中的字段

如何对文件名进行以下更改。我想这是可能的rename,但我不知道如何。

A_B_C.pdf

C_A_B.pdf

ABC在我的文件名中是不同的单词,例如Complete_Works_Plato.pdf

答案1

rename -n 's/([^_]*_[^_]*)_([^_]*).pdf/$2_$1.pdf/' *
  • [^_]*任意数量的非下划线。
  • ( )捕获一组。第一对由 复制$1,第二对由 复制$2

-n如果您对输出满意,请删除。

shell 脚本的类似方法:

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

参数扩展%你会发现和的含义##

相关内容