【发布时间】:2016-05-13 17:42:41
【问题描述】:
我正在尝试重命名一堆媒体文件,但无法构建正确的正则表达式。我的目的是重命名仅保留扩展名的文件,如果有后缀,则带有en.srt、fr.srt、du.srt 或ne.srt。
我尝试了几个命令并非常接近我的目的,但还没有:
rename -n "s/(.*)\/.*\.([[:alnum:]]+|[[:alpha:]]+\.srt)$/\$1\/\$1\.\$2/" */*
$2 无法捕获 .srt 扩展的语言后缀。它只是给出.srt。
这是我构建正则表达式的方式:
dir/file
dir := .*
file := filename.ext
filename := .*
ext := .[a-z0-9]+ or [a-z]+.srt <EOL>
似乎问题在于 .srt 匹配正常的扩展名,而 regex 不在乎它也匹配第二个 or 子句。
rename -n "s/(.*)\/.*\.([a-z0-9]{3}|[a-z]{2}\.srt)$/\$1\/\$1\.\$2/" */*
我怎样才能正确捕获扩展名以将其输入到输出中?
pi@raspbian-AH:/media/adrien_EMD/Movies $ rename -n "s/(.*)\/.*\.([a-z]{2}\.srt|[a-z0-9]{3})$/\$1\/\$1\.\$2/" */*
rename(Inside Out (2015)/Inside.Out.2015.720p.BluRay.x264.YIFY.mp4, Inside Out (2015)/Inside Out (2015).mp4)
rename(Seven Samurai (1954)/Seven Samurai (1954).en.srt, Seven Samurai (1954)/Seven Samurai (1954).srt)
rename(Seven Samurai (1954)/Seven Samurai (1954).fr.srt, Seven Samurai (1954)/Seven Samurai (1954).srt)
rename(The Wizard of Oz (1939)/The.Wizard.of.Oz.1939.1080p.BrRip.x264.BOKUTOX.YIFY.mp4, The Wizard of Oz (1939)/The Wizard of Oz (1939).mp4)
七武士不应出现,因为它的名称已经正确。
谢谢
【问题讨论】:
-
请展示一些具有代表性的示例名称以及每个名称应映射到的内容。
-
试试这个
/([^\w]+srt)/g这将搜索以.srt结尾的文件 -
@gihan,你能解释一下它是做什么的吗?
-
这只是捕获了以
.srt结尾的单词以及其他我的意思是重命名这个你必须以编程方式执行的操作。在java 中你可以使用Pattern and Matcher类