UNIX LINUX MACOS shell 下载合并*.ts视频

问题描述:

下载一个网页上的流媒体视频,通过查看发现,网页有个播放列表XXX.m3u8文件,视频为*.ts格式,0.ts、1.ts、... N.ts。

初步解决方式:

通过迅雷批量下载*.ts文件。但无法快速合并。因为文件名为0.ts、1.ts、11.ts、12.ts、13.ts、.....、2.ts、21.ts、22.ts、23.ts,系统无法按照顺序排序,需要重命名为000.ts、001.ts、002.ts、003.ts、004.ts、005.ts、006.ts、....

快速重命名方案:

1、核心循环框架

for f in *.ts; do echo "$f"; done
# 逐行显示本目录下的所有后缀名为.ts的文件

ls | grep .ts
# 等价命令

这是一个压缩写法,实际可以写多行。写成一行(适用于终端命令提示符)

for f in *.ts   #声明并创建了变量f
do
    echo "$f"  #使用变量f
done

2、核心替换语句

sed -e 's/^.*\.mp4_//g' 1.txt > 2.txt

# 正则表达式部分
^ 表示的行首 (与之对应的是 $ 表示的行尾)。
. 表示的是匹配除了换行以外的任意单字符。
* 表示0次或N次匹配前一个规则或字符。
[ ] 表示的匹配括号内的规则。

# sed的命令部分
sed 是流编辑(stream editor),就是逐行处理编辑工具。
-e 可以不加
's/aaa/bbb/g' 这是标准的正则表达式。把aaa替换为bbb。
常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
        i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p   ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s   ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

3、核心截取语句

url="www.baidu.net"
echo ${url: 0-9}  #省略 length,直接截取到字符串末尾

# 结果为baidu.net。

格式                                            说明
${string: start :length}    从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start}    从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length}  从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start}  从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars}    从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars}   从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%*chars}    从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars}   从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。

4、核心重命名语句

mv a.mp4 b.mp4
#重命名a.mp4为b.mp4

5、核心赋值语句

将一条命令的执行结果赋给一个变量的方法有:

1、使用反引号`` 
如:a=`echo "hello world"`;

即将命令 echo "hello world"的输出赋给变量a

2、可以使用 $()

如:a=$(echo "hello world")

即将命令echo "hello world"的输出赋给变量a

6、最终语句总结

for f in *.ts; do g=$(echo $f | sed 's/^.*\.mp4_/00/g') ;mv $f ${g:0-6} ; done;

合并文件:

cat  *.ts > combine.ts 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,532评论 1 45
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,918评论 1 32
  • ProjectType.objects.values('code').distinct() ProjectTyp...
    青穗黄阅读 3,101评论 0 0
  • 安装下载 git OSX 版下载 git Windows 版下载 git Linux 版 创建新仓库创建新文件夹,...
    hanjun阅读 1,612评论 0 0
  • 文/梦珺 今天和同事胡吃完饭之后,他便去车站踏往旅游地点了。而我则走回宿舍。 回去的路上,我望着街道熙熙囔囔的人群...
    蔓腾阅读 3,772评论 0 0

友情链接更多精彩内容