&1 它将找到所有 mp4 -6ren">
gpt4 book ai didi

linux - 如何对 find 的输出执行 "for each"?

转载 作者:IT王子 更新时间:2023-10-29 01:15:54 24 4
gpt4 key购买 nike

我想找到所有 1920x1080 的 mp4 文件。

如果我这样做

find . -type f -name \*.mp4 -exec ffprobe '{}' \; 2>&1

它将找到所有 mp4 文件并显示视频信息。例如。输出是否包含(以及其他行)

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './5432223.mp4':
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 1744 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc

我目前的想法是

find . -type f -name \*.mp4 -print0|xargs -0 -n1 echo
for f in $(find . -type f -name \*.mp4); do ffprobe $f 2>&1 | grep 1920x1080;done

我不知道如何合并 if grep -q 1920x1080 并且在第一个和第二个文件名中的空格会弄乱输出。

问题

如果输出匹配 1920x1080,我如何只输出带路径的文件名?

最佳答案

您可能想要执行一个 shell。像这样的东西:

find . -type f -name \*.mp4 -exec sh -c 'ffprobe "$0" 2>&1 |
grep -q 1920x1080 && echo "$0"' {} \;

关于linux - 如何对 find 的输出执行 "for each"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com