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"' {} ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |