加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何对find的输出执行“for each”?

发布时间:2020-12-13 23:08:16 所属栏目:Linux 来源:网络整理
导读:我想找到所有mpx文件是1920×1080. 如果我做 find . -type f -name *.mp4 -exec ffprobe '{}' ; 21 它会找到所有mp4文件并显示视频信息.例如.将输出包含(以及其他行) Input #0,mov,mp4,m4a,3gp,3g2,mj2,from './5432223.mp4':Stream #0:0(und): Video: h26
我想找到所有mpx文件是1920×1080.

如果我做

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

在哪里我无法弄清楚如果grep -q 1920×1080并且在第一个和文件名中的第二个空格中混淆如何合并输出.

如果输出匹配1920×1080,如何仅输出带路径的文件名?

解决方法

你可能想要执行一个shell.就像是:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读