寻求为文件列表排队执行命令的最简工具或实现方法
满足需求的文件批量队列处理工具推荐
当然有这类工具,而且很多都是系统自带或轻量易用的,完全符合你想要的「查找文件+队列执行命令」的使用方式:
xargs(几乎所有类Unix系统默认自带)
这是最常用的工具,直接配合find就能实现你的需求,用-I参数指定占位符替换文件名,比如:find ./ -iname '*.mp4' | xargs -I {} ffmpeg -i {} -c:v libx265 {}.hevc其中
{}会被find输出的每个文件名替换。如果需要控制并行执行的队列数量(比如同时跑4个ffmpeg任务),加-P 4参数即可,完美适配批量处理场景。parallel(功能更强大,需单独安装)
比xargs灵活得多,支持更复杂的变量替换,比如自动生成去掉扩展名的输出文件名:find ./ -iname '*.mp4' | parallel ffmpeg -i {} -o {.}_converted.mp4这里
{.}代表去掉文件扩展名的文件名。它还支持失败重试、任务队列调度、日志记录等高级功能,处理大量视频文件时容错性更强。
至于你提到的at系列命令,它本质是定时执行单个任务的工具,要批量处理文件的话确实需要自己先生成每条命令再逐个提交,操作起来反而繁琐,不如上面两个工具直接高效。
内容的提问来源于stack exchange,提问作者SofaKng
相关产品推荐
相关产品推荐

