> 文件与目录管理 > basename

basename: 从路径中提取文件名并移除扩展名

basename 命令从给定的路径中提取不包含目录部分的文件名或目录名。它特别适用于从文件名中移除特定后缀(扩展名)。这在编写 shell 脚本处理文件路径时起着关键作用。

概述

basename 返回文件路径字符串中最后一个斜杠(/)之后的部分。它用于提取文件名或目录名,并可以选择性地移除指定的后缀。不存在名为 `basename-x` 的独立命令,而是通过 `basename` 命令的第二个参数 SUFFIX 来实现移除扩展名的功能。

主要功能

  • 从文件路径中提取文件名
  • 移除指定的后缀(扩展名)
  • 在 shell 脚本中处理路径和分配变量

主要功能和参数

basename 主要通过参数实现功能,不存在 `-x` 等特定选项。相反,可以通过指定第二个参数作为后缀来移除扩展名。

基本参数

生成的命令:

请尝试组合命令。

描述:

`basename` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

basename 命令的各种使用示例。

基本文件名提取

basename /home/user/document.txt

从给定路径中仅提取文件名。

移除扩展名

basename /home/user/report.pdf .pdf

从文件名中移除特定扩展名。通过第二个参数指定要移除的后缀。

移除多个扩展名

basename /home/user/archive.tar.gz .gz

对于像 .tar.gz 这样的多个扩展名,只会移除指定的后缀。

处理目录路径

basename /home/user/documents/

如果路径以目录结尾,则返回最后一个目录名。

与 shell 变量一起使用

FILE_PATH="/var/log/syslog.log"
BASENAME=$(basename "$FILE_PATH")
EXTENSION_REMOVED=$(basename "$FILE_PATH" ".log")
echo "原始路径: $FILE_PATH"
echo "文件名: $BASENAME"
echo "移除扩展名: $EXTENSION_REMOVED"

在 shell 脚本中处理存储在变量中的路径时非常有用。

提示与注意事项

使用 basename 时的注意事项和使用技巧。

  • 斜杠处理: 即使路径末尾有斜杠(/),basename 也会忽略它并返回最后一个目录名。例如:`basename /dir/` -> `dir`
  • 后缀匹配: 后缀必须与 NAME 的末尾精确匹配才能被移除。`basename file.txt .tx` 将返回 `file.txt`。不进行部分匹配。
  • 多个扩展名: 要移除像 `.tar.gz` 这样的多个扩展名,必须从最外层的扩展名开始指定。`basename archive.tar.gz .gz` 将返回 `archive.tar`。`basename archive.tar.gz .tar.gz` 将返回 `archive`。
  • 缺少 `-x` 选项: `basename` 命令不存在 `-x` 选项。而是通过第二个参数直接指定要移除的后缀来利用移除扩展名的功能。这与 `basename-x` 的意图相符。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令