Linux 删除文件名中最后一个字符的Regexp不';行不通

Linux 删除文件名中最后一个字符的Regexp不';行不通,linux,bash,rename,Linux,Bash,Rename,我最近使用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)$/

我最近使用
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.]


或者不使用
重命名
使用:

find . -name "*.mp3" -exec bash -c 'mv "$1" "$(sed "s/-[^.]*\(\.mp3\)$/\1/" <<< $1)"' - {} +

find-名称“*.mp3”-execbash-c'mv”$1”“$(sed“s/-[^.]*\(\.mp3\)$/\1/"实际上它仍然不起作用…但我想知道问题是否来自这里:文件位于单独的NTFS分区上,我每次都必须装载。这是原因吗?我将所有文件移动到了my/home/,但命令仍然不起作用。而且文件和文件夹都具有读取和写入权限。例如filename:“我得到了你-hV20RzTvwZE.mp3”。重命名命令没有任何作用,没有文件被更改,也没有任何输出消息。如果我使用-v,也没有文件被标记为重命名。当我运行
rename
时,该文件被重命名为
我得到了你。mp3
仍然不起作用……我要将其标记为“已应答”手动操作。谢谢你的帮助。