如何用Squirrel-RIFE轻松实现视频补帧:从24fps到60fps的完整指南
2026/7/14 15:31:55
在find的-exec中执行多条命令,可以通过组合命令或管道传递实现。以下是几种标准且高效的方法:
sh -c组合命令(推荐)使用sh -c将多条命令封装为单个命令执行:
find.-name"*.md"-execsh-c' ls -l "$1" cat -n "$1" 'sh{}\;"$1"对应{}找到的文件,sh是占位符(避免$0冲突)。&&逻辑组合(单命令执行)如果命令有依赖关系(前一条成功才执行下一条),可用&&:
find.-name"*.md"-execsh-c'ls -l "$1" && cat -n "$1"'sh{}\;ls成功)再处理内容(cat)。-exec+ 分号(多命令独立执行)用分号;分隔多个-exec,每个命令独立执行:
find.-name"*.md"-execls-l{}\;-execcat-n{}\;ls再cat),效率较低。xargs+sh -c(批量处理)结合xargs批量传递文件,减少进程启动开销:
find.-name"*.md"-print0|xargs-0 -n1sh-c' ls -l "$1" cat -n "$1" 'sh-print0和-0处理含空格/换行的文件名,-n 1确保每个文件单独处理。"$1"引用文件,避免{}在sh -c中直接使用导致解析错误。"$1"包裹,或使用-print0+-0。xargs -P并行处理(如-P 4启用4线程):find.-name"*.md"-print0|xargs-0 -P4-n1sh-c'ls "$1"; cat -n "$1"'sh原命令find . -name "*.md"|xargs -n 1 -exec ls && cat -n的问题:
xargs的-exec是自定义参数,非标准用法,需配合sh -c。&&在管道中会被xargs截断,导致语法错误。修正版:
find.-name"*.md"|xargs-I{}sh-c'ls "{}"; cat -n "{}"'或更安全的版本(处理特殊字符):
find.-name"*.md"-print0|xargs-0 -I{}sh-c'ls "$1"; cat -n "$1"'sh{}通过以上方法,可灵活执行任意组合命令,同时保证安全性和效率。