在bash shell脚本中如何获取文件名及其后缀

创建一个shell脚本test.sh:

#!/bin/bash
input="/home/jack/onitroad/config.ini"
# 获取文件名 config.ini
file_name="${input##*/}"
# 获取文件后缀名
file_extension="${file_name##*.}"
# 获取文件名 config 
file="${file_name%.*}"

# 打印获取到的文件信息
echo "文件: $input"
echo "文件名: $file_name"
echo "后缀名: $file_extension"
echo "文件名(不带后缀): $file"

在Linux中执行shell脚本,运行:

chmod +x test.sh
./test.sh
bash test.sh

Bash从给定路径获取文件名

basename命令将删除目录和文件名的后缀名。

语法非常简单:

basename /path/to/file
basename /path/to/file suffix

示例

basename /bin/ls

还可以使用-a选项传递多个参数,如下所示:

basename -a /bin/ls /backup/onitroad/data.tar.gz

将输出结果存储在shell变量中:

out="$(basename /backup/onitroad-file.tar.gz)"
echo "Filename is $out"

如何删除文件名中的后缀名(扩展名)

要从backups.tar.gz文件中删除.gz,可以执行下面命令:

basename /backups/onitroad/backups.tar.gz .gz

或者

basename -s .gz /backups/onitroad/backups.tar.gz

my_name="$(basename -s .gz /backups/onitroad/backups.tar.gz)"
echo "Filename: $my_name"
在bash shell中如何提取给定路径中的文件名

Bash shell脚本,如何提取给定路径中的文件名和扩展名?
bash shell下如何从路径获取文件名?

日期:2019-11-20 08:53:00 来源:oir作者:oir