📌  相关文章
📜  linux 从路径中去除文件夹名称 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:44.043000             🧑  作者: Mango

Linux 从路径中去除文件夹名称 - Shell-Bash

在编写脚本时,有时需要从路径中获取文件名称或者文件夹名称。本文介绍了如何在Shell脚本中通过Linux命令从路径中获取文件夹名称。

1. 使用basename命令获取文件夹名称

我们可以使用basename命令来获取文件或文件夹的基本名称。如果文件或文件夹的路径中包含了多个目录,则basename命令默认返回最后一个目录的名称。例如,对于路径/home/user1/workspace/basename命令返回的结果是workspace

例如,下面的例子演示了如何使用basename命令获取文件夹名称:

path="/home/user1/workspace/"
dirname=$(basename $path)
echo $dirname  # 输出 workspace

在上述脚本中,我们通过$()basename命令的输出结果赋值给了dirname变量。

2. 使用dirname命令获取目录名称

我们还可以使用dirname命令来获取路径中的目录名称。dirname命令返回文件或文件夹路径中除了最后一个目录外的所有路径信息。因此,如果我们给定一个路径/home/user1/workspace/dirname命令将返回/home/user1/

例如,下面的例子演示了如何使用dirname命令获取文件夹名称:

path="/home/user1/workspace/"
dirname=$(dirname $path)
echo $dirname # 输出 /home/user1

basename类似,我们也是通过$()dirname命令的输出结果赋值给了dirname变量。

3. 使用sed命令获取文件夹名称

另一种获取文件夹名称的方法是使用sed命令。我们可以使用sed命令从路径中提取文件夹名称。具体来说,我们可以使用sed命令删除路径中最后一个斜杠后面的所有字符。例如,对于路径/home/user1/workspace/sed命令将返回/home/user1。我们还可以使用sed命令删除路径中所有斜杠前面的字符,只保留最后一个斜杠后面的字符,以获取文件夹名称。例如,对于路径/home/user1/workspace/sed命令将返回workspace

下面的例子演示了如何使用sed命令从路径中提取文件夹名称:

path="/home/user1/workspace/"
dirname=$(echo $path | sed 's#.*/##')
echo $dirname  # 输出 workspace

在上面的脚本中,我们首先使用echo命令提取路径信息,并将其作为参数传递给sed命令。sed命令则将路径中最后一个斜杠前面的所有字符删除,并返回最后一个斜杠后面的所有字符,即文件夹名称。

总结

本文介绍了在Shell脚本中使用Linux命令获取文件夹名称的三种方法:使用basename命令、使用dirname命令和使用sed命令。每种方法都有其优缺点,程序员可以根据实际需求来选择不同的方法。