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

Bash脚本遍历一级子目录下文本文件失败原因排查

问题原因及解决方法

你的脚本无法工作的核心问题是路径错误:
你写的/{2020..2022}/*.txt是绝对路径,Bash会去系统根目录(/)下查找2020、2021、2022文件夹,但你的目标文件夹是在脚本运行的当前目录下,不是根目录,所以根本匹配不到任何文件。

修正后的脚本(含逐行解析逻辑)

for file in {2020..2022}/*.txt; do
    # 跳过不存在的文件(避免空匹配时输出模式字符串)
    [ -f "$file" ] || continue
    echo "正在处理文件: $file"
    # 逐行读取并解析文件内容,这是Bash处理文本的标准写法
    while IFS= read -r line; do
        # 这里替换成你的解析逻辑,比如打印行内容
        echo "  读取到行: $line"
    done < "$file"
done

关键说明

  • 去掉路径开头的斜杠,使用相对路径{2020..2022}/*.txt,Bash会自动在当前目录下的对应年份文件夹中匹配所有.txt文件。
  • 添加[ -f "$file" ] || continue的作用是:如果某个年份目录下没有.txt文件,大括号展开后的匹配模式会直接作为字符串保留,这个判断可以跳过这些无效的“假文件”,避免后续报错。
  • 用while IFS= read -r line逐行读取是最可靠的方式:IFS=能保留行首/行尾的空格,-r会禁止反斜杠的转义功能,处理包含特殊字符的文本行不会出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:10:20