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

bash脚本遍历目录文件时目录名重复输出如何修改?

问题原因

你的代码存在两处逻辑问题,导致重复输出目录本身:

  • 不带过滤参数的find命令默认会先输出目标目录本身,再输出目录下的所有子项
  • 你写的for循环写法错误,"$Directory"/是固定的目录路径,循环只会遍历这一个值,直接输出自然会再次打印目录路径

修改方案

方案1:仅用find实现(简单高效,支持递归遍历子目录内的文件)

给find加过滤参数,只匹配普通文件:

Directory=C:/temp/
# -type f 表示仅匹配普通文件,不会输出目录
find "$Directory" -type f

如果不需要递归遍历子目录,只需要遍历目标目录的一级文件,可以额外加-maxdepth 1参数:

find "$Directory" -maxdepth 1 -type f

方案2:用for循环实现(仅遍历目标目录的一级文件,不递归子目录)

用通配符匹配目录下所有内容,再加判断过滤掉目录:

Directory=C:/temp/
for filepath in "$Directory"/*
do
    # 仅当匹配项是普通文件时才输出
    if [ -f "$filepath" ]; then
        echo "$filepath"
    fi
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:45:07