linux - 如何编写脚本,以便将输出用作输入?

标签 linux bash

我想编写此命令的脚本

ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output.mp3

合并file1.mp3file2.mp3成为output.mp3

问题是我想要合并的文件多于 2 个。

示例

ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output1.mp3
ffmpeg -i concat:output1.mp3\|file3.mp3 -acodec copy output2.mp3
ffmpeg -i concat:output2.mp3\|file4.mp3 -acodec copy output3.mp3
ffmpeg -i concat:output3.mp3\|file5.mp3 -acodec copy output4.mp3

output4.mp3 是我正在寻找的结果。

这些文件实际上并不是很好地称为"file",然后是一个数字,而是 ls 按照它们应合并的顺序列出了它们。

问题

如何编写脚本,以便我可以在包含偶数或奇数文件的目录中执行它?

最佳答案

如果ffmpeg支持两个以上文件且没有文件包含|,且文件数量不是太多,你可以这样做: ffmpeg -i concat:"$(ls|tr '\n' '|')"-acodec 复制出.mp3

如果没有:

for cfile in *.mp3; do
  ffmpeg -i concat:myout.mp3tmp1\|$cfile -acodec copy myout.mp3tmp2
  mv myout.mp3tmp2 myout.mp3tmp1
done
mv myout.mp3tmp1 <your final file name>

关于linux - 如何编写脚本,以便将输出用作输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803733/

相关文章:

bash - %UserProfile% 的 DrvFs 位置

python - 从 ubuntu 复制后,文件名在 Windows 中无法读取

linux - linux下执行.run文件时,如何知道要安装什么或者后面安装了什么?

linux - 使用awk提取理想字符串

linux - Linux 中的共享内存备份文件如何以及何时被删除?

bash - 在 Bash 脚本中使用日志记录

linux - 空格导致命令无法完成

linux - COMMAND=/bin/chmod -R 777 失败启动后的日志

linux - 根据列排序命令 bash 对制表符分隔文件进行排序

c - 在 Linux 中使用 execv 而不是 execl