如何删除文件名中 4 位数字年份后的文字

如何删除文件名中 4 位数字年份后的文字

我希望删除电影文件中 4 位年份之后的所有文字:

输入:
Some.Movie.Name.2011.1080p.BluRay.x265.mp4
Another.Movie.Name.1999.1080p.BluRay.x264.mp4
Another.Movie.Name.II.2001.1080p.BluRay.x264.mp4

所需输出:
Some.Movie.Name.2011
Another.Movie.Name.1999
Another.Movie.Name.II.2001

我已将 awk 与正则表达式一起使用:
echo "Some.Movie.Name.2011.1080p.BluRay.x265.mp4" |awk -F'.[0-9]{4}' '{print$1}'

这给了我:
Some.Movie.Name

我无法找到使用 awk 或其他任何方法来打印 4 位年份分隔符的方法。

答案1

你可以使用

sed -E "s/(.*\.[[:digit:]]{4})\..*/\1/"

去实现你的追求。

回查

for f in Some.Movie.Name.2011.1080p.BluRay.x265.mp4 Another.Movie.Name.1999.1080p.BluRay.x264.mp4 Another.Movie.Name.II.2001.1080p.BluRay.x264.mp4 ; do 
    echo $f | sed -E "s/(.*\.[[:digit:]]{4})\..*/\1/"
done

产生您想要的输出。

解释

该模式允许 sed 查找用[[:digit:]]{4}点 ( ) 括起来的四位数字 ( \.) 以及.*该模式前后的任何内容 ( )。前面的任何内容(包括数字,不包括四位数字后面的点)都被视为一个组,因此使用括号()。该组在替换中用 反向引用\1

相关内容