Linux脚本 - 保留扩展

时间:2012-06-22 13:26:53

标签: linux bash

我是linux脚本的新手,我遇到了一个问题,我从网上得到了一个脚本并试图修改。

这是脚本

#!/bin/bash
if (($# ==0))
then
    echo "Usage: flvto3gp [flv files] ..."
    exit
fi

while (($# !=0 ))
do 
    ffmpeg -ss 00:00:10 -t 1 -s 400x300 -i $1 -f mjpeg   /home/zavids/rawvids/thumbs/$1.jpg
    shift
done
echo "Finished"
echo "\"fakap all those nonsense!\""
echo ""

所以我从视频中抓取屏幕截图并将其保存为jpeg。问题是保留了视频文件的扩展名,因此完成的文件是video.flv.jpg(例如)。我怎样才能摆脱那个视频扩展?

2 个答案:

答案 0 :(得分:2)

更改此行

ffmpeg -ss 00:00:10 -t 1 -s 400x300 -i $1 -f mjpeg   /home/zavids/rawvids/thumbs/$1.jpg

到这个

ffmpeg -ss 00:00:10 -t 1 -s 400x300 -i $1 -f mjpeg /home/zavids/rawvids/thumbs/${1%.*}.jpg

使用bash参数扩展,在使用它来创建输出文件的名称之前,从输入文件中剥离扩展名。

答案 1 :(得分:0)

你可以尝试使用它:

${string%substring}

它从$ string后面删除$ substring的最短匹配。

对于你的情况:

${1%.flv}

此代码将替换第一个参数末尾的.flv。

您也可以在此处获得大量详细信息:http://tldp.org/LDP/abs/html/string-manipulation.html