You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Bash脚本的路径变量实现文件读取与输出路径替换

解决方案

修改后的完整脚本

#!/bin/bash

echo "Type the category that you want, followed by [ENTER]:"
read category

# 输入根目录固定为changed_folder
INPUT_ROOT="/home/videos_test/changed_folder"
# 输出根目录为 ${category}_new
OUTPUT_ROOT="/home/videos_test/${category}_new"
export STAR="/*"

minimumsize=1000

# 遍历输入目录下的所有文件
for file_path in $INPUT_ROOT$STAR$STAR; do
    [[ ! -f "${file_path}" ]] && continue # 如果不是文件则跳过
    actualsize=$(du -k "$file_path" | cut -f 1)
    if [[ ! $actualsize -ge $minimumsize ]]; then # 如果文件小于1MB则删除
        echo $file_path
        echo size is under $minimumsize kilobytes
        rm "$file_path"
        echo deleted
    else # 大于1MB的文件调用ffmpeg转换
        full_file=$(basename "$file_path")
        # 提取输入文件相对于INPUT_ROOT的相对路径
        relative_path="${file_path#$INPUT_ROOT/}"
        # 拼接得到完整输出路径
        output_full_path="${OUTPUT_ROOT}/${relative_path}"
        # 提前创建输出目录,避免ffmpeg报错
        mkdir -p "$(dirname "$output_full_path")"
        
        echo "输入文件:$file_path"
        echo "输出文件:$output_full_path"

        # 可根据实际需求补充ffmpeg的转码参数,这里已补充输出路径占位
        ffmpeg -i "$file_path" "$output_full_path"

        read -p "Press any key to resume ..."
    fi
done

核心修改说明

  • 调整输入路径定义:将原来动态拼接用户输入category作为输入二级目录的逻辑,改为固定读取/home/videos_test/changed_folder下的内容,匹配你要求的读取路径结构
  • 新增输出路径构造逻辑:
    • 提取输入文件相对于输入根目录的相对路径,保证子目录结构完全镜像
    • 拼接得到以${category}_new为根目录的完整输出路径
    • 调用mkdir -p提前创建输出目录,避免ffmpeg因路径不存在执行失败
  • 补充了变量双引号包裹逻辑,避免文件名带空格时出现执行异常

内容的提问来源于stack exchange,提问作者C0nw0nk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:30:01