我想对输入文件夹中的所有文件运行一个命令,并在输出文件夹中获取结果

我想对输入文件夹中的所有文件运行一个命令,并在输出文件夹中获取结果

我正在尝试运行 YOLO 对象检测代码https://pjreddie.com/darknet/yolo/

我可以运行命令并获得单个视频文件的所需结果,但我不想对每个文件单独执行此操作

例如:

我的命令:python3 yolo_video.py --input sample1.avi --output sample1out.avi --yolo yolo-coco

但我想要这样的东西 python3 yolo_video.py --input inputVideos/sample1.avi --output outputVideos/sample1out.avi --yolo yolo-coco

因此,该命令对输入文件夹中的所有文件(sample1.avi、sample2.avi、sample3.avi……)运行,并将结果作为输出文件夹中的文件(sample1out.avi、sample2out.avi、sample3out.avi……)

答案1

您可以使用带有分号的单行代码来完成此操作,但最好的方法可能只是制作一个小脚本或函数,然后用它来运行它。

mkdir -p output_videos
for i in input_videos/* ; do
    [ -f "${i}" ] || continue
    name=$(echo "${i}" | sed 's,.*/\(.*\)\.\(.*\),output_videos/\1out.\2,g')
    python3 yolo_video.py --input "${i}" --output "${name}" --yolo yolo-coco
done

相关内容