shell怎么截取绝对路径中的最后一层文件名
时间: 2024-03-12 17:43:34 浏览: 14
可以使用`basename`命令来截取绝对路径中的最后一层文件名。该命令的语法如下:
```shell
basename path [suffix]
```
其中,`path`为绝对路径,`suffix`为可选参数,表示要删除的文件名后缀。如果不指定`suffix`,则会返回`path`中最后一层的文件名。例如:
```shell
$ basename /home/user/test/file.txt
file.txt
```
如果希望删除文件名的后缀,可以使用如下命令:
```shell
$ basename /home/user/test/file.txt .txt
file
```
这样就可以截取绝对路径中的最后一层文件名了。
相关问题
shell获取一个绝对路径的最后一层文件名
您可以使用以下shell命令获取一个绝对路径的最后一层文件名:
```bash
filename=$(basename /path/to/file.txt)
echo $filename
```
这个命令将获取路径`/path/to/file.txt`中的文件名`file.txt`,并将其存储在变量`filename`中。然后,这个文件名将被打印到控制台上。如果您需要从绝对路径中删除扩展名,可以使用以下命令:
```bash
filename=$(basename /path/to/file.txt .txt)
echo $filename
```
这个命令将获取路径`/path/to/file.txt`中的文件名`file.txt`,并将其存储在变量`filename`中。然后,`.txt`扩展名将从文件名中删除,并将结果打印到控制台上。
可以同时截取.c 和.cpp的码
如果需要同时截取`.c`和`.cpp`的文件名,可以使用`basename`命令结合`sed`命令来实现。具体的命令如下:
```shell
$ basename /home/user/test/file.cpp | sed 's/\(.*\)\..*/\1/'
```
该命令中,先使用`basename`命令来截取绝对路径中的最后一层文件名`file.cpp`,然后通过`sed`命令来去掉文件名的后缀,只保留文件名`file`。其中,`sed`命令中的正则表达式`\(.*)\..*`表示匹配以`.`为结尾的字符串,并将`.`以及后面的内容去掉,只保留文件名部分。这样就可以同时截取`.c`和`.cpp`的文件名了。