我正在为项目使用 raspbian 。
这是我的情况。我正在创建三个文件:
[date_and_timestamp] 的值在所有三个文件中都是一致的。
我想要做的是查找以 marker _ 开头的所有文件,获取 [date_and_timestamp] 部分并使用它作为参数传递给{{1}组合这两个文件(即以一个看似
的命令结束)ffmpeg
鉴于ffmpeg -i /home/motion/[date_and_timestamp].avi -i /home/motion/[date_and_timestamp].wav /home/motion/[date_and_timestamp].mp4
有多强大,我知道会有办法,但我很难知道它是什么。
方括号是为了清楚起见。它们不会出现在文件名中。
答案 0 :(得分:0)
你好像在寻找这样的东西。
for marker in marker_*; do
ffmpeg -i "${marker#marker_}.avi" -i "${marker#marker_}.wav" "${marker#marker_}.mp4"
done
在正确的目录中运行它,您不必在ffmpeg
命令中对路径名进行硬编码。
符号${variable#prefix}
会产生variable
的值,如果存在,则会移除prefix
。有一个类似的构造%
来删除后缀。
答案 1 :(得分:0)
ls -l marker_* | awk -F[ '{ system("ffmpeg -i /home/motion/["$2".avi -i /home/motion/["$2".wav /home/motion/["$2".mp4") }'
这将列出以marker_开头的所有文件,并将其传递给awk,提取date_and_timestamp(由[分隔的$ 2)然后使用它将日期传递给awk系统函数并形成要执行的命令。在构建与系统函数一起使用的命令时,请特别注意引号。