我想要为一堆 mp4 或 mkv 文件输出一个 .txt 文件,其中包含每个视频文件的媒体信息详细信息。
我使用 find 然后使用 -execdir 创建 mediainfo 输出,但对于找到的所有文件,它都重定向到单个文件。单个文件包含 x 个 mp4/mkv 文件的所有 mediainfo。如何获取匹配的 txt 文件的 Video1.txt 和 Video2.txt 等?
下面是我的 bash 行:
find /mnt/vids/ \( -name '*.mp4' -or -name '*.mkv' \) -execdir mediainfo /mnt/vids/{} > /mnt/vids/{}.txt \;
重定向由 shell 在运行命令之前完成(此处
find
)。您需要
find
生成一个 shell 来为每个文件执行重定向,或者使用mediainfo
's--LogFile
让它自己写入:(请注意并非所有
find
实现都支持嵌入{}
在参数中)。这些将创建一个
/mnt/vids/path/to/file.mp4.txt
,其输出为对应于每个以或结尾的文件的mediainfo
相应文件。/mnt/vids/path/to/file.mp4
.mp4
.mkv
/mnt/vids
要创建 的
file.txt
替代find.mp4.txt
,即将mp4
/mkv
扩展名替换为.txt
,这必须由 shell 完成:其中
${var%pattern}
是标准参数扩展运算符(最初来自 Korn shell),它扩展为 的值,$var
去除pattern
末尾与 匹配的最短字符串,因此这里 为从 最右边的出现位置到文件路径末尾的${file%.*}
部分。.