在bash shell中如何提取给定路径中的文件名

时间:2019-11-20 08:53:00  来源:igfitidea点击:

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

Bash从给定路径获取文件名

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

语法非常简单:

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

示例

basename /bin/ls

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

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

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

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

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

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

basename /backups/theitroad/backups.tar.gz .gz

或者

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

my_name="$(basename -s .gz /backups/theitroad/backups.tar.gz)"
echo "Filename: $my_name"

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

创建一个shell脚本test.sh:

#!/bin/bash
input="/home/Hyman/theitroad/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