【发布时间】:2015-01-06 18:42:26
【问题描述】:
我最近使用youtube-dl 下载了一堆视频,但是程序在文件名末尾附加了字符:例如,Video test 变成了Video test-jSbQ40_9B.mp3。格式始终相同:破折号和大约 10 个字母数字字符或下划线。为什么下面的命令什么都不做?
rename 's/[A-Za-z0-9]*\.mp3/\.mp3/' *
(我也尝试过以 root 身份运行)
谢谢!
【问题讨论】:
我最近使用youtube-dl 下载了一堆视频,但是程序在文件名末尾附加了字符:例如,Video test 变成了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_]
或不使用rename:
find . -name "*.mp3" -exec bash -c 'mv "$1" "$(sed "s/-[^.]*\(\.mp3\)$/\1/" <<< $1)"' - {} +
【讨论】:
rename 时,该文件被重命名为 I've Got You.mp3