在bash中,如何获取路径中的文件名

如何在bash shell脚本中提取文件名和扩展名

example.sh

#!/bin/bash
input="/etc/app/config.ini"
# 提取 config.ini
file_name="${input##*/}"
# 获取后缀 .ini 
file_extension="${file_name##*.}"
# 获取文件名 config 
file="${file_name%.*}"
# 打印变量值
echo "文件完整路径: $input"
echo "文件名(带后缀) : $file_name"
echo "后缀: $file_extension"
echo "文件名(无后缀): $file"

bash中从给定的路径提取文件名或扩展名

basename命令用于从路径中提取文件名(包括后缀)。

[root@yunkai ~]# basename /bin/ls
ls
[root@yunkai ~]# basename /tmp/data.tar.gz
data.tar.gz
[root@yunkai ~]# 

将输出存储在shell变量中:

out="$(basename /tmp/data.tar.gz)"
echo "Filename is $out"

提取文件名(去掉后缀)

[root@yunkai ~]# basename /tmp/data.tar.gz .tar.gz
data
[root@yunkai ~]# basename /tmp/data.tar.gz .gz
data.tar
日期:2019-04-29 03:17:51 来源:oir作者:oir