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

如何使用ls搭配特殊通配符仅输出文件名而不显示完整路径

结论

不存在仅靠ls搭配特殊通配符实现仅输出文件名的方案,核心原因如下:

  • ?、*这类符号属于Shell通配符,作用仅为匹配文件名称,在命令实际执行前就会被Shell自动展开为匹配到的完整路径字符串。也就是说你执行ls /usr/opt/app/ABC_*.csv时,ls实际收到的参数已经是/usr/opt/app/ABC_123.csv这个全路径,默认输出自然会携带目录前缀,通配符本身没有控制输出格式的能力。
  • ls本身没有内置参数支持在传入全路径的前提下,仅输出末尾的文件名部分。
可用替代方案

如果你只是不想改变当前Shell的工作目录(也就是你提到的无法直接执行cd再ls的限制),可以使用子Shell实现,执行过程中切换的目录不会影响当前工作环境:

[input]$ (cd /usr/opt/app && ls ABC_???.csv)
[output] ABC_123.csv

该方案完全符合你不需要调用basename、不需要改动当前工作目录的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:02