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

指定通配符时basename命令报错,如何获取未展开的通配符文件名?

如何用basename提取带通配符的文件名

问题根源

shell会在执行basename命令前,先对通配符*进行路径展开。如果/tmp/fi*匹配到多个文件,basename会收到多个路径参数,从而触发"extra operand"错误。

实现方法

通过引号包裹路径阻止shell的通配符展开,让basename直接处理原始带通配符的字符串,命令如下:

# 单引号包裹(推荐,避免额外解析)
fname=$(basename -- '/tmp/fi*')

# 双引号包裹也可生效
fname=$(basename -- "/tmp/fi*")

执行后,echo $fname会输出fi*,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:49:50