要编写一个递归的ffmpeg脚本来保留子文件夹结构,可以使用递归函数来遍历文件夹中的所有文件和子文件夹。在每个子文件夹中,将使用ffmpeg命令处理文件,并将生成的输出文件保存到相应的目标子文件夹中。
以下是一个示例脚本,用于将输入文件夹中的所有视频文件转换为MP4格式,并保留子文件夹结构:
#!/bin/bash
input_folder="/path/to/input/folder"
output_folder="/path/to/output/folder"
# 递归函数,用于遍历文件夹
function process_folder {
local current_folder=$1
local target_folder="${output_folder}${current_folder#${input_folder}}"
# 创建目标子文件夹
mkdir -p "$target_folder"
# 遍历文件夹中的所有文件和子文件夹
for file in "$current_folder"/*; do
if [ -d "$file" ]; then
# 如果是子文件夹,递归调用函数处理子文件夹
process_folder "$file"
elif [ -f "$file" ]; then
# 如果是文件,使用ffmpeg命令处理文件并保存到目标子文件夹
ffmpeg -i "$file" "${target_folder}/${file##*/}.mp4"
fi
done
}
# 调用递归函数,开始处理输入文件夹
process_folder "$input_folder"
使用此脚本的步骤如下:
/path/to/input/folder
替换为实际的输入文件夹路径,将/path/to/output/folder
替换为实际的输出文件夹路径。bash script.sh
。脚本将遍历输入文件夹中的所有文件和子文件夹,并在输出文件夹中创建相同的子文件夹结构。它将使用ffmpeg命令处理每个文件,并将生成的输出文件保存到相应的目标子文件夹中。
下一篇:保留组合条形图中缺失列的位置