📅  最后修改于: 2023-12-03 15:02:44.043000             🧑  作者: Mango
在编写脚本时,有时需要从路径中获取文件名称或者文件夹名称。本文介绍了如何在Shell脚本中通过Linux命令从路径中获取文件夹名称。
我们可以使用basename
命令来获取文件或文件夹的基本名称。如果文件或文件夹的路径中包含了多个目录,则basename
命令默认返回最后一个目录的名称。例如,对于路径/home/user1/workspace/
,basename
命令返回的结果是workspace
。
例如,下面的例子演示了如何使用basename
命令获取文件夹名称:
path="/home/user1/workspace/"
dirname=$(basename $path)
echo $dirname # 输出 workspace
在上述脚本中,我们通过$()
将basename
命令的输出结果赋值给了dirname
变量。
我们还可以使用dirname
命令来获取路径中的目录名称。dirname
命令返回文件或文件夹路径中除了最后一个目录外的所有路径信息。因此,如果我们给定一个路径/home/user1/workspace/
,dirname
命令将返回/home/user1/
。
例如,下面的例子演示了如何使用dirname
命令获取文件夹名称:
path="/home/user1/workspace/"
dirname=$(dirname $path)
echo $dirname # 输出 /home/user1
与basename
类似,我们也是通过$()
将dirname
命令的输出结果赋值给了dirname
变量。
另一种获取文件夹名称的方法是使用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
命令。每种方法都有其优缺点,程序员可以根据实际需求来选择不同的方法。