gpt4 book ai didi

linux - 如何让 bash 代码处理文件夹和子文件夹中的所有文件?

转载 作者:太空狗 更新时间:2023-10-29 12:22:27 25 4
gpt4 key购买 nike

我有一个代码,使用 ffmpeg 将文件夹中所有文件的 *.avi 转换为 *.mp4。我希望它在所有文件夹和子文件夹上运行;并将结果保存在此子文件夹中。

我已经尝试过查找但没有成功

#!/bin/bash

for i in *.avi;
do
ffmpeg -i /location/"$i" -c:v libx264 -preset ultrafast \
-strict -2 -n /location/"$(basename "$i" .avi)".mp4
done

最佳答案

您可以使用 find在所有子目录中查找匹配文件:

find <top-dir> -iname "*.avi" | while read filename; do ffmpeg -i "$filename" ... "${filename%avi}mp4"; done

... 替换为您的 ffmpeg 选项。

您也可以使用 GNU parallel在多个 CPU 上并行处理找到的文件的实用程序:

find <top-dir> -iname "*.avi" | parallel -i -- ffmpeg -i "{}" ... "{.}.mp4"

关于linux - 如何让 bash 代码处理文件夹和子文件夹中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com