使用 shell 脚本删除两个下划线之间的所有字母

Remove all letters between two underscores with shell script

我的目录有一个类似于 _3vaca3424434_1-lecture-introduction.pdf 的文件名列表,我想将其重命名为 1-lecture-introduction.pdf。我该怎么做?

for f in *; do
    new_f=${f##_*_}
    echo mv -- "$f" "$new_f"
done

查看上面的输出,如果命令看起来正确,请再次删除 echo 和 运行。

${f##_*_}$f.

的值中删除匹配模式 _*_ 的最长前缀