如何从bash中的输出中减去一个单词

时间:2012-10-23 15:50:03

标签: bash

我制作了一个简单的bash脚本,将电影从.avi转换为.mp4,但现在我想再做两件事了。

  1. 输出文件只有* .mp4而不是* .avi.mp4
  2. 转换完成后删除旧文件。
  3. 这是我的剧本。

    #!/bin/bash
    
    
    avconv -i "$1" -c:v libx264 -c:a copy -sn -crf 24 "$1".mp4
    

2 个答案:

答案 0 :(得分:3)

  1. 您应该${1%.avi}.mp4,我们告诉bash在删除了$1后缀的情况下打印.avi的内容,然后附加.mp4后缀。
  2. 我建议运行aconv ... && rm "$1",以便仅在转换成功时删除,因为&&运算符仅在前一个命令成功时才执行其后的命令。
  3. 最终版本:

    #!/bin/bash
    
    avconv -i "$1" -c:v libx264 -c:a copy -sn -crf 24 "${1%.avi}.mp4" && rm "$1"
    

    希望这有助于=)

答案 1 :(得分:2)

怎么样:

avconv -i "$1" -c:v libx264 -c:a copy -sn -crf 24 "${1/.avi/.mp4}" && rm "$1"

更新

在回复评论时,搜索和替换的语法是:

${1/oldstring/newstring}

所以,你可以任何你想要的方式使用它。