要从 shell 脚本中的文件路径中提取文件名和扩展名,您可以使用`基本名称`命令。
这是一个如何使用的示例basename来提取filename and 扩大从给定的文件路径:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/usr/bin/env bash
# 定义文件路径
filepath=“/var/log/mail.log”
# 从文件路径中提取文件名和扩展名
filename=$(basename “$文件路径”)
# 从文件路径中提取扩展名
扩大=“${文件名##*.}”
# 提取不带扩展名的文件名
filename=“${文件名%.*}”
|
在此示例中,`$文件路径` 是您要从中提取文件名和扩展名的文件路径。这basename命令提取filename and 扩大从文件路径并将其存储在filename多变的。
The 扩大然后将变量设置为最后一个之后的字符串。文件名变量中的字符,使用##参数扩展运算符。
The filename然后将变量设置为最后一个之前的字符串。中的字符filename变量,使用%
参数扩展运算符。
这将提取filename and 扩大从文件路径并将它们分别存储在文件名和扩展名变量中。
然后,您可以根据需要在脚本中使用这些变量。例如,您可以使用filename and 扩大变量来检查文件的类型或重命名它。
1. 获取不带路径的文件名
首先,从输入文件名中删除完整文件路径。例如,如果文件名输入为“/var/log/mail.log”然后提取完整的文件名mail.log only.
|
#!/usr/bin/env bash
filepath=“/var/log/mail.log”
filename=$(basename “$文件路径”)
echo “完整文件名:$文件名”
|
输出将是:
Full filename: mail.log
2. 不带扩展名的文件名
现在,从提取的不带路径的完整文件名中提取不带扩展名的文件名,如上所述。
|
#!/usr/bin/env bash
filepath=“/var/log/mail.log”
filename=$(basename “$文件路径”)
filename=“${文件名%.*}”
echo “文件名是:$文件名”
|
输出将是:
Filename is: mail
3. 仅获取扩展
现在,从提取的不带路径的完整文件名中提取不带名称的文件扩展名。
|
#!/usr/bin/env bash
filepath=“/var/log/mail.log”
filename=$(basename “$文件路径”)
扩大=“${文件名##*.}”
echo “扩展名:$扩展名”
|
输出将是:
Extension: log
4. 提取目录路径
您还可以使用`目录名`命令从完整文件路径中提取目录路径。例如:
|
#!/usr/bin/env bash
filepath=“/var/log/mail.log”
dir=$(dirname “$文件路径”)
echo “目录:$dir”
|
输出将是:
Directory: /var/log/
结论
此快速操作指南可帮助您了解如何从文件路径中提取文件名和扩展名。请记住,这些命令仅适用于 bash shell。如果您使用不同的 shell,则可能需要使用不同的语法。