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

如何在Bash脚本中指定动态路径下的this.json作为Python脚本输入?

解决Bash中传递嵌套目录下JSON文件路径给Python脚本的问题

方法1:使用Bash通配符(Glob)直接匹配

你的目录结构对应路径模式为base/rbbc_*/rbbp_*/this.json,直接用这个通配符就能定位所有目标文件,无需依赖ls。

如果Python脚本支持一次性处理多个文件,直接传递所有路径:

python something.py base/rbbc_*/rbbp_*/this.json

如果脚本一次只能处理一个文件,用for循环逐个处理,务必用双引号包裹变量(避免文件名含空格、特殊字符时被错误拆分):

for json_path in base/rbbc_*/rbbp_*/this.json; do
    python something.py "$json_path"
done

方法2:用find命令(更适合复杂场景)

如果目录层级更深、文件名包含特殊字符(比如空格、换行符),或者需要更精确的过滤,find命令是更可靠的选择:

逐个处理文件

find base -type f -path "*/rbbc_*/rbbp_*/this.json" -exec python something.py {} \;
  • -type f:仅查找文件(排除目录)
  • -path "*/rbbc_*/rbbp_*/this.json":匹配符合路径模式的文件
  • -exec ... {} \;:对每个找到的文件执行Python脚本,{}代表当前匹配到的文件路径

一次性传递所有文件路径

如果脚本支持接收多个文件路径作为参数,用+代替\;,可减少进程启动开销:

find base -type f -path "*/rbbc_*/rbbp_*/this.json" -exec python something.py {} +

为什么用ls会出问题?

ls的输出是为人类阅读设计的,当文件名包含空格、制表符或换行符时,Bash会错误地将这些字符视为参数分隔符,导致路径被拆分成多个无效参数。直接用通配符或find命令能避免这个问题,因为它们会正确处理带特殊字符的文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:55:16