如何轻松快速提升网站流量?

使用 basename 命令(推荐)

功能:从完整路径中提取文件名(含扩展名)或移除扩展名。
语法

basename [路径] [后缀]  # 后缀用于移除扩展名

示例

  1. 提取文件名(含扩展名)

    basename /home/user/docs/report.txt  # 输出:report.txt
  2. 移除扩展名

    basename /home/user/docs/report.txt .txt  # 输出:report
  3. 批量处理文件(结合循环)

    for file in /path/*.jpg; do
      name=$(basename "$file" .jpg)
      echo "文件名: $name"
    done

使用Shell参数扩展

适用场景:在Shell脚本中直接操作变量,无需调用外部命令。

语法

${变量##*/}    # 从路径提取文件名(含扩展名)
${变量%.*}     # 移除扩展名
${变量%%.*}    # 移除多重扩展名(如.tar.gz)

示例

file_path="/var/log/apache2/error.log"
echo "${file_path##*/}"   # 输出:error.log
echo "${file_path%.*}"    # 输出:/var/log/apache2/error
echo "${file_path##*.}"   # 输出:log(仅提取扩展名)

使用 awk 命令

适用场景:处理复杂路径或批量文本提取。

示例

  1. 从路径提取文件名

    echo "/tmp/data/file.csv" | awk -F/ '{print $NF}'  # 输出:file.csv
  2. 提取文件名(不含扩展名)

    echo "/tmp/data/file.csv" | awk -F/ '{sub(/\..*/, "", $NF); print $NF}'
    # 输出:file

使用 find + -printf 选项

适用场景:递归搜索文件并直接输出文件名。

示例

find /home/user/docs -type f -printf "%f\n"  # %f 表示仅打印文件名# report.txt
# image.png

使用 ls 结合管道(谨慎使用)

注意ls 解析文件名可能遇到空格或特殊字符问题,建议仅在简单场景使用。

ls /path | awk '{print $1}'  # 列出文件名(第一列)

常见问题解答

  1. 如何提取目录名?
    使用 dirname 命令:

    dirname /home/user/docs/report.txt  # 输出:/home/user/docs
  2. 如何处理带空格的文件名?
    所有命令中变量用双引号包裹:

    basename "/path/My Document.txt"  # 正确
  3. 如何提取多个扩展名(如 .tar.gz)?
    使用双重参数扩展:

    file="archive.tar.gz"
    echo "${file%.*}"      # 输出:archive.tar
    echo "${file%%.*}"     # 输出:archive

总结建议

  • 简单提取 → 用 basename
  • 脚本内操作 → 用 参数扩展
  • 批量处理 → 结合 find 或循环
  • 避免解析错误 → 始终用引号包裹变量

引用说明基于 GNU Coreutils 文档(basename, dirname)、Bash 手册(参数扩展)及 Linux 命令行工具标准实现,实践环境为 Ubuntu 22.04,所有命令均通过验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7952.html

(0)
酷番叔酷番叔
上一篇 2025年7月19日 13:01
下一篇 2025年7月19日 13:13

相关推荐

  • linux如何生成公钥

    Linux 上,可以使用 ssh-keygen 命令生成公钥。

    2025年8月16日
    1200
  • Linux误删文件如何避免永久丢失?

    删除文件(不可逆操作)rm 文件名 # 删除单个文件rm file1 file2 # 批量删除文件rm -i *.log # 交互式确认删除(推荐新手)危险警告:rm -rf /目录名 可强制递归删除目录(含子目录),绝对禁止对根目录执行此操作!安全删除目录rmdir 空目录名 # 仅删除空目录rm -r 目录……

    2025年8月7日
    2100
  • linux如何退出tty

    Linux 中,退出 tty 可以使用 exit 命令或按 `Ctrl + D

    2025年8月18日
    1100
  • Windows 10如何安全体验Linux?

    在 Windows 10 上安全体验 Linux 的三种主流方法:使用微软官方支持的 WSL(无需重启),通过虚拟机软件(如 VirtualBox,完全隔离)安装,或采用双系统启动(独立分区运行)。

    2025年6月18日
    3300
  • 为什么安装依赖总是失败?

    在 Linux 系统上安装 QEMU 的完整指南QEMU(Quick Emulator)是一款开源的硬件虚拟化工具,允许你在 Linux 系统中创建和运行虚拟机(支持 Windows、Linux 等多种操作系统),它通过硬件加速技术(如 KVM)提供接近原生的性能,适用于开发测试、系统模拟和云计算环境,以下是详……

    2025年8月8日
    1600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信