gpt4 book ai didi

regex - 用于重命名多个文件的 Bash 终端命令

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:44 24 4
gpt4 key购买 nike

正如标题所示,我正在寻找可以在终端中使用的 bash 命令(甚至可能是 perl 命令)来帮助我重命名文件夹中的文件。

我是一名 DJ,每周通过包含数百首新音乐的 zip 文件接收音乐,但文件名通常不一致,有时文件在歌曲标题前有不同的字符。我希望替换第一个字母之前的任何字符,并删除字符串末尾的任何额外空格。

Original < 01 - Artist - Song .mp3

New > Arist - Song.mp3

Original < _Artist - Song.mp3

New > Artist - Song.mp3

Original < 04 04 )(*)*+ Artist - Song.wav

New < Artist - Song.wav

几个月前我发现了一个带有正则表达式的 bash 可以处理字符串前面的 [0-9] 个字符,我尝试了一些方法但没有任何效果所以我在这里发帖看看是否有人可以帮助。非常感谢任何帮助,提前致谢!

我的尝试

for f in [0-9]* ; do
if[[ $f =~ ^[0-9]+[[:blank:]]+(.+) ]] ; then
newname = "${BASH_REMATCH[1]}"
echo "> $newname"
fi
done

最佳答案

在您要重命名的文件所在的目录上尝试以下重命名命令。

rename 's/^[^A-Za-z]*([A-Za-z]+) - ([A-Za-z]+)[^.]*/$1 - $2/' *.*

rename 's/^[^A-Za-z]*|\s+(?=\.[^.]*$)//g' *.*

关于regex - 用于重命名多个文件的 Bash 终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26696689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com