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

如何在当前目录及子目录下显示不带.sh扩展名的文件名?

提取当前及子目录下不带.sh扩展名的文件名

以下几种方法可以实现需求:

  • 使用find结合basename命令(最可靠,适配含多个.的文件名):

    find -type f -name "*.sh" -exec basename {} .sh \;
    

    basename的第二个参数指定要移除的后缀,只会去掉文件名末尾的.sh,比如test.file.sh会输出test.file。

  • 使用find配合sed做后缀替换:

    find -type f -name "*.sh" -printf "%f\n" | sed 's/\.sh$//'
    

    sed的正则表达式会匹配行尾的.sh并替换为空,效果和basename方法一致,适合需要对输出做进一步管道处理的场景。

  • 使用awk分割文件名(仅适合文件名不含多个.的情况):

    find -type f -name "*.sh" -printf "%f\n" | awk -F. '{print $1}'
    

    这个方法以.为分隔符取第一个字段,但如果文件名是test.abc.sh,会输出test而不是test.abc,所以只适用于文件名只有一个.的场景。

内容的提问来源于stack exchange,提问作者Femi-Laizer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:05