我最近使用 youtube-dl
下载了一堆视频,但是程序在文件名末尾附加了字符:例如,Video test
变成了 视频测试-jSbQ40_9B.mp3
。格式始终相同:破折号和大约 10 个字母数字字符或下划线。为什么下面的命令什么都不做?
rename 's/[A-Za-z0-9]*\.mp3/\.mp3/' *
(我也试过以root身份运行它)
谢谢!
最佳答案
这应该有效:
rename 's/-\w+(\.mp3)$/$1/' *
否则:
rename 's/-\w+(?=\.mp3)$//' *
您的正则表达式与文件名中破折号后的下划线不匹配。 \w
匹配 [a-zA-Z0-9_]
或者不用重命名
使用:
find . -name "*.mp3" -exec bash -c 'mv "$1" "$(sed "s/-[^.]*\(\.mp3\)$/\1/" <<< $1)"' - {} +
关于linux - 删除文件名中最后一个字符的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26844184/