V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KevZhi
V2EX  ›  Bash

求助,这样的终端脚本该如何写?

  •  
  •   KevZhi · 2018-03-05 18:05:35 +08:00 · 2656 次点击
    这是一个创建于 2456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个文件夹 folder,里面有若干个子文件夹(命名随机),每个子文件夹里有若干个视频文件,命名随机。 现需要在每个子文件夹内执行如下命令(使用 ffmpeg 合并视频,输出文件保存在原来的文件夹里即可),如何完成?

    for f in ./*; do echo "file '$f'" >> mylist.txt;done;
    ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4;
    done
    

    感谢各位帮助

    11 条回复    2018-03-05 19:17:39 +08:00
    KevZhi
        1
    KevZhi  
    OP
       2018-03-05 18:10:56 +08:00 via iPhone
    就是在目录下每个子目录内执行一遍如上两行命令,跳出,在下一个子目录执行,跳出...
    rwdy2008
        2
    rwdy2008  
       2018-03-05 18:15:22 +08:00   ❤️ 1
    cd dir
    for i in `ls`;do
    cd dir/$i;
    执行你的命令
    done
    是要这样吗?
    afpro
        3
    afpro  
       2018-03-05 18:26:37 +08:00
    for d in $(ls -d */); do
    ffmpeg -f concat -safe 0 -i <(ls ${d}*.mp4) -c copy ${d}output.mp4
    done

    这样可好?
    KevZhi
        4
    KevZhi  
    OP
       2018-03-05 18:27:02 +08:00
    @rwdy2008 直接在目录下执行就可以,无须对每个文件再执行一次,是这样吗?
    KevZhi
        5
    KevZhi  
    OP
       2018-03-05 18:29:31 +08:00
    @afpro 因为文件都没有文件名,好像出了点问题
    KevZhi
        6
    KevZhi  
    OP
       2018-03-05 18:33:18 +08:00
    @afpro 不对,没有拓展名。
    afpro
        7
    afpro  
       2018-03-05 18:35:54 +08:00
    不对 文件列表还要有个 file

    for d in $(ls -d */); do
    ffmpeg -f concat -safe 0 -i <(ls ${d}*.mp4 | xargs -I{} echo "file '{}'") -c copy ${d}output.mp4
    done
    afpro
        8
    afpro  
       2018-03-05 18:36:23 +08:00
    这样? 我看你 mylist.txt 里面要 file 开头
    ynyounuo
        9
    ynyounuo  
       2018-03-05 18:44:02 +08:00   ❤️ 1
    在最顶层 dir 执行,如果子文件夹只有视频的话,否则将 find 换成需要的文件类别和后缀。

    for dir in ./* ; do (cd "$dir"; find * | sed "s/^/'/;s/$/'/;s/^/file /" > tmp.txt; ffmpeg -f concat -safe 0 -i tmp.txt -c copy output.ext); done
    KevZhi
        10
    KevZhi  
    OP
       2018-03-05 19:17:20 +08:00
    @ynyounuo 可以做到,谢谢,如果可以把每个输出按顺序明明的话怎么做呢?
    KevZhi
        11
    KevZhi  
    OP
       2018-03-05 19:17:39 +08:00
    @ynyounuo 明明——命名 或者按文件夹名命名
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:37 · PVG 07:37 · LAX 15:37 · JFK 18:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.