如何按照顺序拼接文件

sh/bash/dash/ksh/zsh等Shell脚本
回复
罗非鱼
帖子: 980
注册时间: 2008-04-12 12:44

如何按照顺序拼接文件

#1

帖子 罗非鱼 » 2010-05-24 21:20

已经知道有如下文件:
/home/pt/videos/pama2/1.flv.mpg
/home/pt/videos/pama2/2.flv.mpg
/home/pt/videos/pama2/3.flv.mpg
/home/pt/videos/pama2/4.flv.mpg
/home/pt/videos/pama2/5.flv.mpg
/home/pt/videos/pama2/6.flv.mpg
/home/pt/videos/pama2/7.flv.mpg
/home/pt/videos/pama2/8.flv.mpg
/home/pt/videos/pama2/9.flv.mpg
/home/pt/videos/pama2/10.flv.mpg
我需要按照从1到10的顺序拼接,使用下面的程序
for filename in /home/pt/videos/pama2/*mpg;
do cat $filename >> /home/pt/videos/pama2/result.mpg;
echo $filename;
done;
注意echo $filename; 是用来看文件拼接顺序的
结果,拼接成了一个大文件,但是没有按照我期望的顺序,
屏幕输出
/home/pt/videos/pama2/10.flv.mpg
/home/pt/videos/pama2/1.flv.mpg
/home/pt/videos/pama2/2.flv.mpg
/home/pt/videos/pama2/3.flv.mpg
/home/pt/videos/pama2/4.flv.mpg
/home/pt/videos/pama2/5.flv.mpg
/home/pt/videos/pama2/6.flv.mpg
/home/pt/videos/pama2/7.flv.mpg
/home/pt/videos/pama2/8.flv.mpg
/home/pt/videos/pama2/9.flv.mpg
有一个文件本应当放在最后的,结果拼接在了最前面,
/home/pt/videos/pama2/10.flv.mpg
请问,我的shell程序如何修改?为何会出现这种结果?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何按照顺序拼接文件

#2

帖子 eexpress » 2010-05-24 22:10

mencoder
all "copy", but better use mpeg4.

● cat .mplayer/mencoder.conf
[mpeg4]
profile-desc="MPEG4 编码"
oac=mp3lame=yes
ovc=lavc=yes
lavcopts=vcodec=mpeg4:vbitrate=1200

[mpeg4-hq]
profile-desc="高质量 MPEG4 编码"
profile=mpeg4
lavcopts=mbd=2:trell=yes:v4mv=yes

● /usr/bin/mencoder -profile mpeg4 `ls *.flv` -o profile-mpeg4.mpeg4
● 鸣学
hrbeu06ws
帖子: 100
注册时间: 2008-09-25 16:06

Re: 如何按照顺序拼接文件

#3

帖子 hrbeu06ws » 2010-05-24 22:16

代码: 全选

#!/bin/bash
for i in $(seq 10)
do
        cat /home/pt/videos/pama2/${i}.flv.mpg >> /home/pt/videos/pama2/result.mpg
        echo /home/pt/videos/pama2/${i}.flv.mpg
done
Power cloaked in simplicity !
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何按照顺序拼接文件

#4

帖子 eexpress » 2010-05-24 22:22

cat would make player crash.
perhaps

mencoder 's "copy" can fix all problem
● 鸣学
回复