如何用一个命令删除文件名的前“n”个字符

如何用一个命令删除文件名的前“n”个字符

我看到过几篇关于如何从文件名中删除部分内容的帖子,但针对的情况与我的情况不同。

我想在命令中删除文件夹中文件里的‘n’个字符。从

Song-01-Artist-JohnDoe - songtitle-A.mp3
Song-01-Artist-JohnDoe - songtitle-B.mp3
Song-01-Artist-JohnDoe - songtitle-C.mp3

变成

songtitle-A.mp3
songtitle-B.mp3
songtitle-C.mp3

我该如何实现这一点?任何帮助我都非常感谢。TIA

答案1

您可以使用基于 Perl 的rename命令,也可以使用类似 sed 的正则表达式替换

rename -n 's/.{25}//' -- *.mp3

或者使用简单的子字符串操作

rename -n '$_ = substr($_,25)' -- *.mp3

或者切换到zsh并使用相同类型的字符串切片,如u/doneal24 的评论

autoload -Uz zmv        # best put in your .zshrc

zmv -n '(*.mp3)' '${1:25}'

在所有情况下,-n一旦您对建议的操作感到满意,就将其删除。

相关内容