我正在使用 ffmpeg 来获取音频剪辑的元信息。但我无法grep它。
$ ffmpeg -i 01-Daemon.mp3 |grep -i Duration
FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib
--mandir=/usr/share/man --arch=i386 --extra-cflags=-O2
...
Run Code Online (Sandbox Code Playgroud)
我检查过,这个 ffmpeg 输出被定向到 stderr。
$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
所以我认为 grep 无法读取错误流来捕获匹配的行。我们如何启用 grep 读取错误流?
使用nixCraft链接,我将标准错误流重定向到标准输出流,然后 grep 工作。
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
Run Code Online (Sandbox Code Playgroud)
但是如果我们不想将 stderr 重定向到 stdout 呢?