shell根据文件获取不带后缀、不带路径的名称
时间: 2024-09-06 07:05:14 浏览: 104
WINDOWS 右键 复制路径的快捷键 增加图标 不带引号
在Shell脚本中,你可以使用不同的工具和参数来获取一个文件名,而不包括它的后缀和路径。下面是几种常见的方法:
1. 使用`basename`命令:
`basename`命令可以从完整的文件路径中提取出文件名。如果与`cut`命令结合使用,可以进一步去除文件的后缀。
```shell
filename="/path/to/yourfile.txt"
filename_without_extension=$(basename "$filename" | cut -d. -f1)
echo $filename_without_extension # 输出: yourfile
```
2. 使用shell参数扩展:
Bash提供了强大的参数扩展功能,可以使用`%`模式匹配来移除路径部分,然后使用`%%`来移除文件后缀。
```shell
filename="/path/to/yourfile.txt"
filename_without_path="${filename##*/}" # 移除路径部分,得到文件名
filename_without_extension="${filename_without_path%%.*}" # 移除后缀部分,得到不带后缀的文件名
echo $filename_without_extension # 输出: yourfile
```
3. 使用`sed`命令:
`sed`是一种流编辑器,可以对输入流进行处理,并且可以通过正则表达式匹配并修改字符串。
```shell
filename="/path/to/yourfile.txt"
filename_without_extension=$(echo $filename | sed -e 's#.*/##' -e 's/\..*//')
echo $filename_without_extension # 输出: yourfile
```
在上述方法中,选择哪一种取决于你的个人喜好以及你正在使用的Shell环境的具体特点。
阅读全文